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