编写一个java文件,需要在每次运行时清除它

时间:2014-02-02 00:55:19

标签: java file-io

我正在使用Java FileWriter从一个文件中获取一些数据,这些数据将进行一些转换并放入输出文件中。我希望输出文件至少被清除,如果在每次运行我的应用程序后都没有删除,那么我的问题是我将如何实现这一目标?

这是我到目前为止所得到的:

try {
    file = new File(filepath);
    fileWriter = new FileWriter(file, true);
    fileWriter.write(data.toJSONString() + "\n");
    fileWriter.flush();
    fileWriter.close();
} 
catch (IOException e) {
e.printStackTrace();
}
System.out.print(data + "\n");
System.out.print(o + "\n");
}
file.createNewFile();

2 个答案:

答案 0 :(得分:1)

如果您不想附加到该文件,请使用正确的FileWriter构造函数参数值作为第二个参数,“追加”参数:

fileWriter = new FileWriter(file, true);

而是:

fileWriter = new FileWriter(file, false);

像往常一样,请查看FileWriter API以获取详细信息。


修改
你说:

  

我可能只是在这一点上混淆了太多 - 当我设置追加为假时,它取代了我循环的最后一次运行中文件中的内容,所以我最后只得到最后一行 - 我想要在程序运行时逐行提供数据,当它完成时我希望文件保留在那里,直到下一次运行 - 此时我想清除内容..

听起来你正在为循环的每次迭代创建一个新的FileWriter。如果是这样,不要。创建一个FileWriter,将第二个构造函数参数设置为false,并在 循环之前创建 。然后循环使用它,而不是在循环中重新创建它,然后当循环结束并且你正在使用它时,关闭它。简化事情。

答案 1 :(得分:0)

这可以在您需要时删除文件(在大多数情况下 - 您必须具有足够的权限),但您必须调用该方法。否则,如果您只想在JVM关闭时删除该文件,请使用file.deleteOnExit(),捕获相同的安全错误。

public void delete(File file){

    try{
        if(file.delete()){
               Logger.info("File deleted");
            }
            else{
               Logger.warning("Deletion Failure");
       }

    }
    catch(SecurityException e){
          Logger.warning("Insufficient Permissions");
    }
}