如何使PrintWriter覆盖旧文件

时间:2014-06-08 23:58:03

标签: java

我正在开展一个项目,我需要将一些数据打印到文件中。在调试阶段,我想覆盖旧的文本文件,这样我就不必删除旧文件只是为了查看我在代码中所做的一些更改的结果。目前,新的输出数据要么添加到文件中的旧数据中,要么文件根本不会更改(另外,为什么会这样?)。以下是代码的打印部分:

public class Test {
     public static void main(String[] arg) {
     PrintWriter pw = null;
     try {
         pw = new PrintWriter(new FileOutputStream("Foo.txt", true));
     } catch (Exception e){}
     double abra = 5;
     double kadabra = 7;    
     pw.printf("%f %f \n", abra, kadabra);
     pw.close();
     }
}

谢谢!

2 个答案:

答案 0 :(得分:16)

Pass false to the append parameter覆盖文件:

pw = new PrintWriter(new FileOutputStream("Foo.txt", false));

为第二个参数传递true表示您要附加到文件;传递false表示您要覆盖该文件。

答案 1 :(得分:1)

只需传递第二个参数 false

在处理txt文件时,还可以使用其他writer对象代替FileOutputStream。例如

  1. pw = new PrintWriter(new FileWriter(“ Foo.txt”,false));
  2. pw = new PrintWriter(new BufferedWriter(new FileWriter(“ Foo.txt”,false)));

在处理txt / docs文件时,我们应该使用普通的书写器对象(FileWriter或BufferedWriter),而在使用.mp3,图像,pdf等二进制文件时,我们应该使用流(FileOutputStream或OutputStreamWriter)。