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

时间:2013-07-12 06:56:30

标签: java

您好我正在通过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();

3 个答案:

答案 0 :(得分:5)

代码会有所帮助,但可能是你告诉它附加数据,因为默认是覆盖。找到类似的东西:

file = new FileWriter("outfile.txt", true); 

并将其更改为

file = new FileWriter("outfile.txt", false); 

或只是

file = new FileWriter("outfile.txt");

因为默认是覆盖,否则应该有效。

基于您的编辑,只需在FileWriter中将true更改为false,或将其删除即可。第二个参数不是必需的,当true指定要将数据附加到文件时。

您提到了写入不完整的问题... BufferedWriter()不是必需的,如果您的文件很小,那么您可以单独使用FileWriter()并避免任何此类问题。如果你确实使用BufferedWriter(),你需要在.close()之前.flush()它。

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

答案 1 :(得分:1)

将追加参数设为false

new FileWriter(yourFileLocation,false);

答案 2 :(得分:0)

您可以使用简单的File和FileWriter类。 FileWrite类的构造函数提供了两种不同的变量来制作文件。一个只接受文件对象的。另一个是两个参数,一个是文件对象,第二个是布尔值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类,因为它还提供了2种不同类型的构造函数,与FileWriter相同。但您始终可以参考Java Doc API。