我正在使用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();
答案 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");
}
}