2012-05-09 7 views
-2

Я написал следующий код для слияния и удаления исходных файлов, но каким-то образом исходные файлы не удаляются. Может кто-нибудь, пожалуйста, проливает свет на то, что я здесь не вижу.Невозможно удалить файлы с помощью Java

public void doDelete(List<String> dID)throws IOException { 

     String DID=null; 

     try{ 
      for(ListIterator<String> iterator = dID.listIterator(); iterator.hasNext();) 
      { 

       DID= (String) iterator.next(); 

       System.out.println("Deleting PDF" +DID); 
       File f =new File("E:\\TestFolder"+ "\\" +DID+".pdf"); 
       if (!f.exists()) { 
         System.err.println("File " + f 
          + " not present to begin with!"); 
         return; 
         } 
       System.out.println(f.length()); 
       System.out.println(f.getAbsolutePath()); 
       boolean success = f.delete(); 
       if (!success){ 
        System.out.println("Deletion failed.");    
       }else{ 
        System.out.println("File deleted."+DID); 
       } 
      } 
     }catch (Exception e) { 
      // TODO: handle exception 
      e.printStackTrace();    
     } 
    } 
} 
+7

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

+4

Ваш код содержит много '' System.out.println() '' s. Что они говорят? – Roy

+1

Вы публикуете много абсолютно не относящегося к делу кода. Просматривая его кратко, я не мог найти, где вы на самом деле называете doDelete(). Кроме того, пожалуйста, укажите (соответствующие части) вашей программы. – Ingo

ответ

2

TL; DR, но отказ в удалении файлов обычно происходит из-за того, что файл все еще открыт. Тем более, что вы запускаете его в Windows. Если вы хотите получить причину неудачи удаления, вы можете использовать API-интерфейс Java 7 вместо этого, это даст вам причину отказа удаления в качестве исключения.

java.nio.Files.delete(...) 

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete(java.nio.file.Path)

0

В вашем методе createFileFromBlob вы открываете несколько FileOutputStreams (для каждого элемента dID.listIterator()), но только закрытие последнего в вашем наконец блокировать. Это оставит открытый дескриптор для всех файлов, отличных от последних, что предотвратит их удаление в соответствии с ответом Пульсара.

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