我想知道清除文件的最佳方法是什么。我知道java会自动使用
创建一个文件f = new Formatter("jibberish.txt");
s = new Scanner("jibberish.txt");
如果不存在。但是,如果一个存在并且我想在每次运行程序时清除它会怎么样?这就是我想知道的:再次说出如何清除已存在的文件只是空白? 这就是我的想法:
public void clearFile(){
//go through and do this every time in order to delete previous crap
while(s.hasNext()){
f.format(" ");
}
}
答案 0 :(得分:6)
如果您想清除文件而不删除,可以解决此问题
public static void clearTheFile() {
FileWriter fwOb = new FileWriter("FileName", false);
PrintWriter pwOb = new PrintWriter(fwOb, false);
pwOb.flush();
pwOb.close();
fwOb.close();
}
编辑:它抛出异常,因此需要捕获异常
答案 1 :(得分:4)
我能想到的最好的是:
Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING);
和
Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING);
在两种情况下,如果pathObject中指定的文件是可写的,那么该文件将被截断。无需调用write()函数。上面的代码足以清空/截断文件。这是java 8中的新功能。
希望它有助于
答案 2 :(得分:3)
您可以删除该文件并再次创建它,而不是执行大量的io。
if(file.delete()){
file.createNewFile();
}else{
//throw an exception indicating that the file could not be cleared
}
或者,您可以一次性覆盖文件的内容,如其他答案中所述:
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
此外,您正在使用Scanner
中带有String
参数的构造函数。此构造函数不会从文件中读取,而是使用String
参数作为要扫描的文本。您应该首先创建一个文件句柄,然后将其传递给Scanner
构造函数:
File file = new File("jibberish.txt");
Scanner scanner = new Scanner(file);
答案 3 :(得分:1)
您只需将空字符串打印到文件中即可。
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
答案 4 :(得分:0)
类型
new PrintWriter(PATH_FILE).close();