Файл всегда возвращает false для isDirectory и isFile в Java - PullRequest
2 голосов
/ 19 марта 2012

Почему файл возвращает false для метода isFile(), даже если это файл.И когда это каталог, он возвращает false для isDirectory().Я делаю что-то неправильно?Эти файлы / каталоги, которые я тестирую, не существуют, и мне нужно их создать, поэтому я тестирую, следует ли мне использовать createFile() или mkdir().

File file = new File("C:/Users/John/Desktop/MyDir/file.txt");
if(!file.exists())
{
    System.out.println("Is directory : " + file.isDirectory());         
    System.out.println("Is file : " + file.isFile());
}

Ответы [ 5 ]

10 голосов
/ 19 марта 2012

В вашем if вы проверяете, существует ли файл.Если он не существует, то это ни файл, ни каталог.

Java не может определить, является ли ваш объект File файлом или каталогом только со строкой пути.Строка может означать файл или каталог (у вас может быть папка с именем file.txt или файл с тем же именем).

2 голосов
/ 19 марта 2012

Вы используете isDirectory() и isFile() для файлового объекта, который не существует.Оба эти метода возвращают false, если указанный файл еще не существует, согласно документации.

2 голосов
/ 19 марта 2012

То, что вы делаете, говорит, что его не существует. Если он не существует, он не является ни файлом, ни каталогом. Ваша логика должна быть неправильной, так как вы должны использовать:

if(file.exists()){
0 голосов
/ 19 марта 2012

Как это может быть файл или каталог, пока он не существует?В Linux и Windows (хотя сам Explorer не позволяет включать .), file.txt является допустимым именем как для файла, так и для каталога, поэтому Java не может знать, как вы (или ваш пользователь)намеревался использовать это.

0 голосов
/ 19 марта 2012

Ваша программа распечатывает только, если if(!file.exists()), что означает, что если файл не существует, она сообщит вам, если file.isFile().То есть, поскольку файл не существует, ваша программа выводит только False.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...