2017-05-31 53 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

我完全同意你的意见 –

相关问题