【问题标题】:how to save data into notepad from java如何从java将数据保存到记事本中
【发布时间】:2017-05-31 03:01:52
【问题描述】:

大家好,我正在尝试在记事本中保存数据,但我不知道如何保存很多行。使用此代码,我只需保存一次数据即可。

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) {
                };
              }

【问题讨论】:

  • 永远不要写一个空的catch子句catch (Exception ex) { };如果发生异常,您将永远不会知道。至少将ex.printStackTrace(); 放在空括号内,这样您就可以查看是否发生了异常。

标签: java file filewriter printwriter bufferedwriter


【解决方案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");
 }

}

【讨论】:

  • 此解决方案有效。但是,我建议不要在每次要写入文件时都关闭 PrintWriter。相反,让它保持打开状态,直到你完成它然后关闭它一次。
  • 现在写的,如果在关闭PrintWriter时抛出异常,FileWriter不会被关闭。
  • 我完全同意你的意见
【解决方案2】:

你应该将你的 wr.append 放在循环中,使用 arrayList.size 作为你的条件,你在这里所做的是将整个块放在一个 for 循环中,这不是一个好主意,一个原因是你继续创建这 3 个类的对象:FileWriter、BufferedWriter 和 PrintWriter,这是一个潜在的 java.lang.OutOfMemoryError: Java heap space error。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    相关资源
    最近更新 更多