Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不覆盖现有数据的情况下添加数据?_Java_File_Io_Filesystems - Fatal编程技术网

Java 如何在不覆盖现有数据的情况下添加数据?

Java 如何在不覆盖现有数据的情况下添加数据?,java,file,io,filesystems,Java,File,Io,Filesystems,我正在创建一个每日储蓄日志应用程序 我正在使用的文件将覆盖现有数据。 我需要一个解决方案,其中的文件可以更新而不覆盖现有的数据 这是我正在编写的代码 对于写入数据: private static void write(int cur_bal,int amt ,int flag) throws IOException { File file = new File("bal.txt"); log= new BufferedWriter(n

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

我正在使用的文件将覆盖现有数据。 我需要一个解决方案,其中的文件可以更新而不覆盖现有的数据

这是我正在编写的代码

对于写入数据:

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

如果文件编写器是在附加模式下创建的,则BufferedWriter可以附加到文件中:
新建文件编写器(文件,true)
一个解决方案-

PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("file.txt", true)));
pw.println("some text");
pw.close();
另一种方法是创建新的FileWriter(file,true)——第二个参数true启用追加模式

但是,您应该使用Log4j之类的日志框架来维护日志