0

嗨,我正在通过 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();
4

3 回答 3

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();
于 2013-07-12T07:04:23.153 回答
1

将附加参数设置为false

new FileWriter(yourFileLocation,false);
于 2013-07-12T07:02:25.467 回答
0

您可以使用简单的 File 和 FileWriter 类。FileWrite 类的构造函数提供了 2 种不同的文件来制作文件。一种只接受文件对象。另一种是有两个参数,一个是文件对象,第二个是布尔值 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。

于 2013-07-12T08:11:33.810 回答