2017-05-31 27 views
0

大家好我試圖將數據保存在記事本中,但我不知道如何保存多行。使用這段代碼我只能保存一次數據。如何將數據保存到java的記事本

package Vista; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 

public class notepad_Data { 

    public void escribir(String nombreArchivo) { 

      File f; 
      f = new File("save_data");      
        try {    
        FileWriter w = new FileWriter(f); 
        BufferedWriter bw = new BufferedWriter(w); 
        PrintWriter wr = new PrintWriter(bw); 
        wr.append(nombreArchivo+" ");    
        bw.close(); 

       } catch (IOException e) { 
       };     

    } 
    public static void main(String[] args){  
     notepad_Data obj = new notepad_Data(); 
     obj.escribir("writing in the notepad"); 
    } 
} 

我試圖與此代碼在escribir方法,但不工作

for(int i=0; i<1000; ++i){   
        try {    
        FileWriter w = new FileWriter(f); 
        BufferedWriter bw = new BufferedWriter(w); 
        PrintWriter wr = new PrintWriter(bw); 
        wr.append(nombreArchivo+" ");    
        bw.close(); 

       } catch (IOException e) { 
       }; 
       } 
+0

的[如何將文本追加到Java中的現有文件]可能的複製(https://stackoverflow.com/questions/1625234/how-to-append-text-to-an -existing-file-in-java) –

+1

永遠不要寫一個空的catch子句'catch(Exception ex){}';如果發生異常,你永遠不會知道。至少把'ex.printStackTrace();'放在空括號內,這樣你會看到是否發生異常。 –

回答

0

您應該將使用arrayList.size作爲你的條件內環路您wr.append,你在這裏做的您將整個塊放在for循環中,這不是一個好主意,原因之一是您繼續創建這3個類的對象:FileWriter,BufferedWriter和PrintWriter,這是一個潛在的java.lang.OutOfMemoryError:Java堆空間錯誤。

1

每次執行程序時,都會創建一個新的sava_data文件,用相同的名稱替換以前的文件,這樣就不會添加新的內容。

public class Notepad_Data { 
public void escribir(String nombreArchivo) { 
    FileWriter fw = null; 
    try{ 
     File f = new File("save_data"); 
     fw = new FileWriter(f, true); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

    PrintWriter pw = new PrintWriter(fw); 
    pw.println(nombreArchivo); 
    pw.flush(); 

    try{ 
     fw.flush(); 
     pw.close(); 
     fw.close(); 

    }catch(Exception e){ 
     e.printStackTrace(); 
    } 

} 
public static void main(String[] args){  
    Notepad_Data obj = new Notepad_Data(); 
    obj.escribir("writing in the notepad11"); 
} 

}

+0

該解決方案有效。但是,我建議您不要在每次要寫入文件時關閉PrintWriter。相反,請保持打開狀態,直到完成並關閉一次。 – WIR3D

+0

由於現在寫入了,如果在關閉PrintWriter時引發異常,FileWriter將不會關閉。 –

+0

我完全同意你的意見 –

相關問題