2017-01-12 4 views
-2
File[] hiddenFiles = directory.listFiles((FileFilter) HiddenFileFilter.HIDDEN); 
for (File hiddenFile : hiddenFiles) { 
    String hidden = hiddenFile.getCanonicalPath(); 
    File file = new File(hidden); 
    file.deleteOnExit(); 
} 

Я пробовал этот для удаления скрытого файла, но этот не работает. Есть ли другое решение?Как удалить скрытый файл на Java?

+5

http://importblogkit.com/2015/07/does-not-work/ – Biffen

+1

Что именно не работает? программа не находит скрытый файл или не может удалить указанный файл? и если я должен был догадаться, я бы сказал, что вам нужно изменить 'new File (« hiddenfile »);' to 'new File (hidden);' –

+0

@Guru Вы пытаетесь удалить 'hiddenFiles'? Этот код нигде не приближается к достижению этого. – Biffen

ответ

2

Нет никакой разницы между удалением скрытого файла и обычного файла. Все должно работать хорошо, но в вашем случае вы пытаетесь удалить файл под названием «hiddenFile». Я предлагаю вам удалить кавычки.

File[] hiddenFiles = directory.listFiles((FileFilter) HiddenFileFilter.HIDDEN); 
for (File hiddenFile : hiddenFiles) { 
    hidenFile.delete(); 
    } 
} 
+0

Я уже пробовал это. Я не мог удалить это. Когда я попытался напечатать результат. Результат неверен. 'System.out.println (hiddenFile.delete());' = false – Guru

+0

Проблема должна быть где-то в другом месте; возможно, у вас нет прав на удаление. Я предлагаю вам сделать быстрый тест; изменить код, чтобы использовать NiO 2/Файлы, а не java.io.File: \t 'попробовать { \t \t java.nio.file.Files.delete (hiddenFile.toPath()); \t} catch (IOException e) { \t e.printStackTrace(); \t} ' Он должен позволить вам распечатать имеющуюся у вас ошибку. Обычно Oracle рекомендует использовать NIO2 (Files), а не File для таких операций. Надеюсь это поможет. Далее читаем о NIO2 и удалении здесь: https://docs.oracle.com/javase/tutorial/essential/io/delete.html –

+0

java.nio.file.DirectoryNotEmptyException: путь/в/файл \t на солнце. nio.fs.UnixFileSystemProvider.implDelete (UnixFileSystemProvider.java:242) \t в sun.nio.fs.AbstractFileSystemProvider.delete (AbstractFileSystemProvider.java:103) \t на java.nio.file.Files.delete (Files.java: 1079) \t at scrm.hidden.main (hidden.java:17) T – Guru

0

Вы должны использовать путь для доступа к файлу. Не используйте File file = new File("hiddenfile");, но используйте File file = new File(hidden);, так как это путь к каталогу вашего файла.

+0

Я изменился. Но все равно не работает. – Guru

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