2014-11-03 3 views
1

Окружающая среда:Невозможно удалить скрытые файлы в Linux с Java

  • Linux Ubuntu 14.04LTS
  • Java 1,7

Текущий код:

String fileName = ".fileName"; 
      try { 
       java.io.File F = new java.io.File(fileName); 
       java.io.RandomAccessFile RF = new java.io.RandomAccessFile(F,"rwd"); 
       RF.close(); 
       boolean deleted = F.delete();     
       System.out.println("File was deleted: " + deleted); 
      } catch (FileNotFoundException e1) { 
       System.out.println("Unable to access file: " + e1.getMessage()); 
      } 

Файл все еще существует, но удалено, и нет FileNotFoundException.

+0

Не будет ли файл открытым, когда вы вызываете 'F.delete'? Сначала попробуйте закрыть «RF». 'File # delete' возвращает' boolean', указывающий на успешность операции, вы можете проверить его. – MadProgrammer

+1

Убедитесь, что ваш файл находится на том пути, который вы так думаете. И почему вы открываете файл перед вызовом 'delete()'? –

+0

Отредактированный код для отражения предложения @MadProgrammer. Странно, что он говорит, что он удален, но файл все еще там. – cbrad

ответ

2

Один из следующих, вероятно, ваша проблема:

  • вы удалите в нужном каталоге? Я заметил, что вы указываете не абсолютный путь, а относительный путь, который не означает, что вы задаете относительный путь по назначению. Вы можете удалить что-то в другом каталоге.
  • Закрыть файл F, вы оставляете ручку открытой, и я не уверен в последствиях.
  • Как вы проверяете «все еще там»? ls, а не cat или nano или что-то еще?

И другие отладки:

  • делает открытие РФ дела? (Это не должно).
  • Действительно ли это факт, что это скрытый файл? Какой файл вы на самом деле удаление?
  • это происходит в разных каталогах?
  • Это происходит, если вы заблокировали доступ для чтения/записи к файлу, указанному в chmod? Если вы блокируете чтение того, что терпит неудачу, если вы блокируете запись, что не удается? Я сильно подозреваю, что это прояснит вашу проблему.
+0

Оказывается, это была проблема с пробелами. String.trim() решила проблему. Представляется ошибочным, что delete возвращает true, если файл не существовал в первую очередь. Но, тем не менее, очень полезные предложения. Спасибо. – cbrad

+0

@cbrad рассмотреть размещение в качестве ответа и принять. В идеале описывайте свои шаги отладки при определении этого. – djechlin

+0

сделаю, спасибо. – cbrad

1

Я знаю, что это старая нить, но это может быть полезно кому-то еще, поскольку никто не указал на это. Блокировка блокирует исключение, которое никогда не будет выбрано. Если вы хотите узнать, присутствует ли файл, а затем удалить, используйте java.nio.Files.delete (Path). Если файл отсутствует, он будет генерировать исключение FileNotFoundException. Проверьте javadocs, все это подробно описано.

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