【问题标题】:How to add data without overwriting the existing data?如何在不覆盖现有数据的情况下添加数据?
【发布时间】:2020-08-27 09:49:39
【问题描述】:

我正在创建一个每日储蓄日志应用程序。

我正在使用的文件会覆盖现有数据。 我需要一个可以在不覆盖现有数据的情况下更新文件的解决方案。

这是我正在处理的代码;

用于写入数据:

private static void write(int cur_bal,int amt ,int flag) throws IOException
    {
        File file = new File("bal.txt"); 
        log= new BufferedWriter(new FileWriter("log.txt"));//writer for log
        bal= new BufferedWriter(new FileWriter(file));// "      "  bal
        Scanner File = new Scanner(file);
       SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");  
      Date date = new Date(); 
      String stat ="";
      int balance=0;
      switch(flag)
      {
      case 1:
      {stat="Added";
      balance = cur_bal+amt;
      break;}
      case 2:
      {stat="Removed";
      balance = cur_bal-amt;
      break;}     
      }
      
      String inf=sdf.format(date)+"   "+amt+" ("+stat+")";
      System.out.println(inf);
      System.out.println(balance);
      bal.write(balance+"\n");
      log.write(inf+"\n");
      bal.close();
      log.close();
    }

用于读取文件:

private static int bal_read() throws IOException
    {
        FileReader fr=new FileReader("bal.txt");
        int i,balance=0;
        while((i=fr.read())!=-1)  
            balance =  i;
        
        fr.close();
        return (balance);
    }

【问题讨论】:

    标签: java file io filesystems


    【解决方案1】:

    一个解决方案 -

    PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("file.txt", true)));
    pw.println("some text");
    pw.close();
    

    另一种方法是创建新的 FileWriter(file, true) - 第二个参数 true 启用附加模式。

    但是,您应该使用 Log4j 等日志框架来维护日志。

    【讨论】:

      【解决方案2】:

      如果 FileWriter 是在追加模式下创建的,BufferedWriter 可以追加到文件中:new FileWriter(file, true)

      【讨论】:

        猜你喜欢
        • 2020-08-30
        • 1970-01-01
        • 2016-03-30
        • 1970-01-01
        • 1970-01-01
        • 2022-12-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-15
        相关资源
        最近更新 更多