Я сделал этот простой эксперимент, чтобы перечислить все файлы/каталог в родительском каталоге. Сделал это, создав проект java в eclipse по имени «JavaProject» и класс «Temp.java» в src/com. Код, как показано ниже:isDirectory() метод return 'false' при вызове в java package 'com'
public class Temp {
public static void main(String[] args) {
search("../JavaProject");
}
public static void search(String dName) {
String[] files = new String[100];
File search = new File(dName); // make file object
if (!search.isDirectory()) {
return;
}
files = search.list(); // create the list
for (String fn : files) {// iterate through it
System.out.print(" " + fn);
File temp = new File(fn);
if (temp.isDirectory()) {
search(fn);
}
System.out.println();
}
}
}
Структура файла, как показано ниже:
JavaProject (реж)
.classpath (файл)
.project (файл)
.settings (реж)
- org.eclipse.jdt.core.prefs (файл)
бен (реж)
ком (файл)
- Temp.class (файл)
ЦСИ (реж)
ком (реж)
- Temp.java (файл)
Когда я запускаю выше программу, она дает следующий результат:
.classpath
.project
.settings org.eclipse.jdt.core.prefs
bin com
src com
Я не могу понять, почему он не печатает файл .java и .class файл внутри папки ком. Когда я пытаюсь отлаживать, тогда объект file в 'com' возвращает 'false' для методов isDirectory() и isFile().
В какой каталог вы его используете? –
Я сначала запустил его из eclipse (это будет директор JavaProject), а позже попытался запустить из cmd из каталога JavaProject. В обоих случаях я получаю одинаковые результаты. –
Но когда вы запуститесь из затмения, он, конечно, работает из каталога «bin»? Итак, «../JavaProject» на самом деле не существует? Вот почему вы получаете false, возвращаемый из 'isDirectory()'. –