2013-07-22 5 views
1

Я попытался создать файл с пустым заголовком или просто пробелом, и он работал, но я не могу найти файл в каталоге. Я даже не мог удалить или переименовать файл.Создание файла с пустым заголовком

File dir1 = new File("dir1"); 
dir1.mkdir(); 
File file1 = new File(dir1, ""); 
file1.createNewFile(); 

System.out.println(file1.exists()); всегда возвращает истину, даже если я исполню file1.delete() или file1.renameTo(...)

+4

* "Я пытался создать файл с пустым названием" * Почему?!? –

+0

Вам нужно указать абсолютный путь здесь new File («C: \\ dir \\ file.txt»); или новый файл ("/ usr/loc/file.txt"); – Reddy

+0

Файл должен иметь непустое имя. Я предполагаю, что в вашем случае 'file1' ссылается на ваш каталог' dir1'. –

ответ

3

Поскольку вы передаете пустую строку для ребенка, тогда file1 будет такой же, как dir1, все, что вы делаете, чтобы file1 на самом деле происходит с созданным вами каталогом.

Вот пример:

public static void main(String[] args) { 

File directory = new File("/home/test"); 
directory.mkdir(); 

File file = new File(directory, ""); 

System.out.println(file.exists()); 
System.out.println(file.getAbsolutePath()); 
System.out.println(directory.getAbsolutePath()); 

file.delete(); 
System.out.println(directory.exists()); 
System.out.println(file.exists()); 
} 

выход:

true 
/home/test 
/home/test 
false 
false 
+0

Спасибо за указатель на AbsolutePath. Но когда вы делаете 'file.delete()', он все равно не удаляет файл или каталог. '..exists()' все еще дает true. Пожалуйста, проверьте – Mercenary

+0

Странно, на моей машине с jdk 7 он удаляет папку и возвращает false позже. – Nima

+1

Зависит, возможно, от того, что вы используете, я думаю, что в unix возможно, но не в окне. – Deckard27

Смежные вопросы