2013-05-06 26 views
2

我需要列出目錄中的所有子文件夾並將其寫入文本文件。但是當我編碼時,只有最後一個子文件夾才寫入文件。請幫助。我是Java的初學者。列出目錄中的所有子文件夾並將其寫入文本文件

public class Main { 
// private Object bufferedWriter; 

    /** 
    * Prints some data to a file using a BufferedWriter 
    */ 
    public void writeToFile(String filename) { 
     try 
     { 
     BufferedWriter bufferedWriter = null; 
     bufferedWriter = new BufferedWriter(new FileWriter(filename)); 


     int i=1; 
     File f=new File("D:/Moviezzz"); 
     File[] fi=f.listFiles(); 
     for(File fil:fi) 
     { 
      if(fil.isHidden()) 
      { 
       System.out.print(""); 
      }  
      else if(fil.isDirectory()||fil.isFile()) 
      { 
       int s=i++; 

       String files = fil.getName(); 



      //Start writing to the output stream 
      bufferedWriter.write(s+" "+fil); 
      bufferedWriter.newLine(); 

      // bufferedWriter.write(s+" "+files); 
      } 

     } 


      //Construct the BufferedWriter object 


    } catch (FileNotFoundException ex) { 
      ex.printStackTrace(); 
     }catch (IOException ex) { 
      ex.printStackTrace();} 

    } 


    public static void main(String[] args) { 
     new Main().writeToFile("d://my.txt"); 
    } 
} 
+1

嘗試關閉循環後的'BufferedWriter'。 – 2013-05-06 16:04:37

+0

你做過flush()嗎?嘗試一下。 – Ketan 2013-05-06 16:09:36

+0

@AhmedKRAIEM,你是對的,你應該將它發佈爲答案 – 2013-05-06 16:17:19

回答

0

uptil你調用flush() BufferWriter類的方法它不會將你的數據寫入文件。

沒有必要flush()每次循環。但是你可以在循環結束後寫下它。

要把那個yourObj.flush()的主要事情是保持你的緩衝區內存清潔。因爲在調用flush()方法之後,數據將從內存中釋放並寫入您的文件。

+0

如何在不改變順序的情況下列出目錄中的所有文件夾,即使在添加新文件時,在使用JAVA和Sql的文件中server2008 @ Pietu1998,@ Ketan – Shan 2013-05-13 14:36:17

0

在循環之後關閉BufferedReader

for(File fil:fi) 
{ 
    ... 
} 
bufferedReader.close(); 

另外,我建議這些發生在你的代碼,使其更具可讀性和效率:

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filename)); 
... 
if(!fil.isHidden() && (fil.isDirectory() || fil.isFile())) 
{ 
    ... 
} 

您可以直接創建BufferedReader。然後,你得到的文件名,但沒有做任何事情,所以只需刪除get。最後,您不必將System.out.print("");置於if以檢查文件是否隱藏。您可以使用空語句,甚至無代碼,或使用!運算符進行反轉。

if(fil.isHidden()) 
{ 
    ; // Do nothing 
} 
else 
{ 
    // Do something 
} 

if(fil.isHidden()); // Do nothing 
else 
{ 
    // Do something 
} 

if(!fil.isHidden) 
{ 
    // Do something 
} 
相關問題