| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > инфа о файле |
| Автор: Rusico 18.5.2004, 10:54 |
| Добрый день. У меня есть небольшая проблемка: необходимо вытащить инфу о файле, а именно его родительский каталог. обычно это делается так: File f = new File(fname); f.getParent(); Но дело в том, что эта инфа нужна о самом CLASS-файле. Как это сделать? Заранее спасибочки. |
| Автор: AntonSaburov 18.5.2004, 12:19 | ||
Что это значит ? Ты имеешь в виду, что тебе нужна информация о классе, который лежит в файле .CLASS ? Тогда посмотри в сторону класса Class. Там есть все необходимое. |
| Автор: Domestic Cat 18.5.2004, 15:34 | ||
|
| Автор: LSD 18.5.2004, 19:21 |
| 2 Domestic Cat Этот прием не всегда срабатывает, например если class файл находится не в текущем каталоге он не сработает. Есть еще другой вариант: ClassLoader.getSystemClassLoader().getResource("java/lang/Object.class") выдает: jar:file:/C:/Soft/Programming/JBuilderX/jdk1.4/jre/lib/rt.jar!/java/lang/Object.class а MyClass.class.getClassLoader().getResource("MyClass.class") выдает: file:/C:/Documents%20and%20Settings/root/JProjects/Temproject/classes/MyClass.class |
| Автор: Domestic Cat 18.5.2004, 19:55 | ||
Tem ne menee dlya package eto rabotat' ne budet, a absolutePath (canonicalPath) srabotaet. |
| Автор: LSD 18.5.2004, 21:25 | ||
Что вы имеете ввиду? |
| Автор: Domestic Cat 18.5.2004, 22:00 |
| Esli class pomeshen v pakage (package mypackage;) to privedenniy vami kod rabotat' ne buded i brosit NullPoinerException(hotya dlya default package on zarabotaet). absolutePath srabotaet i dlya classa pomeshennogo v package. |
| Автор: LSD 18.5.2004, 22:12 |
| Ну конечно надо приводить полное имя класса с package, кстати для Object я так и написал. |
| Автор: Domestic Cat 18.5.2004, 22:37 |
| Togda nado uznavat polnii put' k classu; no getPagent dast parent dlya etogo classa a ne dlya package (skazhem, dlya Object vydalo by file:/.../lang). Nu, chego Rusico nado ya ne v kurse, poetomu |
| Автор: LSD 19.5.2004, 19:34 |
| 2 Domestic Cat Я попробовал ваш код для классов прописанных в CLASSPATH (и в jar и не jar), он выдает неправильный результат, он просто выдает текущую директорию. |
| Автор: Domestic Cat 19.5.2004, 19:49 | ||
Da ya i soglasen, on budet rabotat' s tolko s tekushey directoriey - nehoroshii kod
tut neponyatno gde class - v package ili net. Esli v package to kakoy catalog - classa ili package? A s kodom Vy pravy. |
| Автор: Rusico 20.5.2004, 13:40 |
| Здавствуйте, извините, что так долго отсутствовал, просто выход в НЕТ имею исключительно в рабочие дни. Отвечаю на доп. вопросы, если кому ещё интересно: 1. Мой класс находится в пакете; 2. Если поподробнее, суть вопроса такова: Странно, но если мой пакет с классом находится не в C:\JBuilder7\jdk1.3.1\bin, то я не могу прописывать относительные пути к файлам. Спасибо за столь оживлённое обсуждение, обязательно попробую все из вышеприведённых способов. |
| Автор: LSD 20.5.2004, 18:55 | ||||
| Что значит относительные пути, относитально code base или отностительно текущей директории? Если относитально code base то пишешь так:
Для получения пути относительно тукущего каталога пишите:
|
| Автор: breeezy 1.6.2004, 13:14 |
| Пишу сюда, потому что по теме. Дяденьки гуру, просветите, пожалуйста! Необходимо вытащить инфу о файле, а именно не только lastModified(), но и время создания и прочее - все, что возможно выжать. Класс File явно чего-то недоговаривает. Что ж такое то... |
| Автор: Domestic Cat 1.6.2004, 15:58 |
| Sm. zdes': http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html Opredelit' datu/vremya sozdaniya faila v Java (core classes) nelzya. Skoree vsego eto svyazano s ne s Java a s host OS. U apacha naprimer takaya biblioteka est' http://jakarta.apache.org/tomcat/tomcat-4.0-doc/catalina/docs/api/org/apache/naming/resources/FileDirContext.FileResourceAttributes.html |
| Автор: LSD 1.6.2004, 19:30 | ||
Полная информация о файле зависит от файловой системы, поэтому стандартными средствами ее не получить. Но есть возможность сделать хитрый ход:
где <command> - системная команда получения информации о файлах, т.е. например для виндов это: DIR, ATTRIB и COMPACT. |