2015-04-23 3 views
0

После записи текстовых файлов в каталог, я пытаюсь удалить пустые файлы, написанные PrintWriter.File.delete() не удаляет файлы в каталоге

Функция File.delete() не удаляет файл. Ниже приведен код для написания и удаления.

private static void writeFile(ArrayList<ArrayList<String>> listRowVal, String szOutputDir, ArrayList<String> listHeader){  
     PrintWriter pw = null;   
     try {      
      ArrayList<String> listCells = listRowVal.get(0);    
      int iCells = listCells.size();   
      for(int k=0; k<iCells; k++){ 
       String language = listHeader.get(k); 
       String szFileName = "files_"+ language +".csv";     
       pw = new PrintWriter(new FileWriter(szOutputDir + File.separator + szFileName));    
       for(ArrayList<String> listNCRCellVal : listRowVal){ 
        String szVal = listNCRCellVal.get(k); 
        if(szVal != null && szVal.trim().length() > 0){ 
         pw.println(szVal); 
        } 
        pw.flush();     
       }     
      }   

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }finally { 
     try { 
      if(pw != null){ 
      pw.close(); 
      pw = null; 
      } 
      //System.gc(); 
      deleteEmptyFiles(szOutputDir); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    } 
private static void deleteEmptyFiles(String szDirPath) { 
     File file = new File(szDirPath); 
     if (file.isDirectory()) { 
      String[] files = file.list(); 
      if (files.length > 0) { 
       for (String szFileName : files) { 
        File deleteFile = new File(szDirPath + File.separator + szFileName); 
        if (deleteFile.length() == 0) {      
         //deleteFile.setWritable(true, false); 
         boolean bdeleted = deleteFile.delete();      
         if(bdeleted){ 
          System.out.println(deleteFile.getName() + " deleted.");       
         } 
        } 

       } 
      } 
     } 
    } 

Что пойдет не так .. ??

+3

Вы получаете какое-либо исключение? Если да, пожалуйста, дайте стек. – Aakash

+0

У вас есть какое-либо исключение? вы пытались отлаживать? – Jens

+2

offtopic - рассмотрим использование Java 7 (попробуйте с ресурсами). Ваш код будет более читабельным. – Jayan

ответ

2

Вы должны закрыть каждый PrintWriter, то есть pw.close() должен находиться в конце цикла «k».

+0

В дополнение к этому, close() должен быть в блоке finally {...}. –

+0

любой из этих ошибок закрывает Printwriter в блоке finally. – RamN

+0

Спасибо. Удалите его сейчас. – RamN

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