Java 当我们第二次写入文本文件时,用新内容替换文本文件的旧内容

Java 当我们第二次写入文本文件时,用新内容替换文本文件的旧内容,java,Java,您好,我正在通过java代码将一些数据写入文本文件,但当我再次运行代码时,它再次附加到旧数据,我希望新数据覆盖旧版本。 有人能帮忙吗 BufferedWriter out1 = new BufferedWriter(new FileWriter("inValues.txt" , true)); for(String key: inout.keySet()) { String val = inout.get(key);

您好,我正在通过java代码将一些数据写入文本文件,但当我再次运行代码时,它再次附加到旧数据,我希望新数据覆盖旧版本。 有人能帮忙吗

BufferedWriter  out1 = new BufferedWriter(new FileWriter("inValues.txt" , true));
  for(String key: inout.keySet())
                {
                    String val = inout.get(key);
                    out1.write(key+" , "+val+"\n");
                }
                out1.close();

将append参数设置为
false

new FileWriter(yourFileLocation,false);

将append参数设置为
false

new FileWriter(yourFileLocation,false);

代码可能会有所帮助,但您可能会告诉它添加数据,因为默认情况下是覆盖。找到类似于:

file = new FileWriter("outfile.txt", true); 
并将其更改为

file = new FileWriter("outfile.txt", false); 
或者只是

file = new FileWriter("outfile.txt");
由于默认设置是覆盖,所以两种方法都可以

根据您的编辑,只需在FileWriter中将true更改为false,或将其删除。第二个参数不是必需的,如果为true,则指定要将数据附加到文件中

你提到了一个书写不完整的问题。。。BufferedWriter()不是必需的,如果您的文件很小,那么您可以单独使用FileWriter()并避免任何此类问题。如果确实使用BufferedWriter(),则需要先.flush()刷新它,然后再.close()关闭它


代码可能会有所帮助,但您可能会告诉它添加数据,因为默认情况下是覆盖。找到类似于:

file = new FileWriter("outfile.txt", true); 
并将其更改为

file = new FileWriter("outfile.txt", false); 
或者只是

file = new FileWriter("outfile.txt");
由于默认设置是覆盖,所以两种方法都可以

根据您的编辑,只需在FileWriter中将true更改为false,或将其删除。第二个参数不是必需的,如果为true,则指定要将数据附加到文件中

你提到了一个书写不完整的问题。。。BufferedWriter()不是必需的,如果您的文件很小,那么您可以单独使用FileWriter()并避免任何此类问题。如果确实使用BufferedWriter(),则需要先.flush()刷新它,然后再.close()关闭它


您可以使用简单的文件和FileWriter类。 FileWrite类的构造函数提供了两种不同的变体来生成文件。只接受文件对象的文件。另一个有两个参数,一个是file object,另一个是boolean true/false,它指示要创建的文件是追加内容还是覆盖内容

下面的代码将覆盖内容

public class WriteFile {
    public static void main(String[] args) throws IOException {
        File file= new File("new.txt");
        FileWriter fw=new FileWriter(file,true);
        try {

            fw.write("This is first line");
            fw.write("This is second line");
            fw.write("This is third line");
            fw.write("This is fourth line");
            fw.write("This is fifth line");

            fw.write("hello");

        } catch (Exception e) {

        } finally {
            fw.flush();
            fw.close();
        }
    }
}

它也适用于PrintWriter类,因为它还提供了与FileWriter相同的两种不同类型的构造函数。但您始终可以参考Java Doc API。

您可以使用简单的File和FileWriter类。 FileWrite类的构造函数提供了两种不同的变体来生成文件。只接受文件对象的文件。另一个有两个参数,一个是file object,另一个是boolean true/false,它指示要创建的文件是追加内容还是覆盖内容

下面的代码将覆盖内容

public class WriteFile {
    public static void main(String[] args) throws IOException {
        File file= new File("new.txt");
        FileWriter fw=new FileWriter(file,true);
        try {

            fw.write("This is first line");
            fw.write("This is second line");
            fw.write("This is third line");
            fw.write("This is fourth line");
            fw.write("This is fifth line");

            fw.write("hello");

        } catch (Exception e) {

        } finally {
            fw.flush();
            fw.close();
        }
    }
}


它也适用于PrintWriter类,因为它还提供了与FileWriter相同的两种不同类型的构造函数。但是您可以随时参考Java Doc API。

有趣的是,通常的场景是新数据覆盖旧数据,而程序员希望它附加。有趣的是,通常情况下,新数据会覆盖旧数据,而程序员希望对其进行追加。您如何能够如此确定OP使用的是
FileOutputStream
?存在
java.io.FileWriter
@johnchen902您如何能够如此确定
FileWriter
。无论哪种方法,您都必须将追加参数设置为false@anirudh但当我添加false时,有些内容是不正确的coming@IYAZ.F你必须
flush
流..在关闭流之前调用
flush
方法你怎么能如此确定OP正在使用
FileOutputStream
?有
java.io.FileWriter
@johnchen902你怎么能如此确定
FileWriter
。任何一种方法都必须将append参数设置为false@anirudh但当我添加false时,有些内容是不正确的coming@IYAZ.F您必须
flush
流..关闭前调用
flush
方法stream@andy但是当我删除第二个参数时,我得到的是不完整的数据,因为loops@IYAZ.F你不需要我。你有3位专家在帮你。他们会帮你弄明白的,我确信。@IYAZ.F我编辑了我的答案,为你提供了适合你的代码。包括所需的out1.flush()@andy,但当我删除第二个参数时,由于某些原因,我得到的数据不完整loops@IYAZ.F你不需要我。你有3位专家在帮你。他们会帮你弄明白的,我确信。@IYAZ.F我编辑了我的答案,为你提供了适合你的代码。包括所需的out1.flush()