java 清空文件内容的两种方式
1.情景展示
有时候,我们需要这样一种场景:
我们知道,在java中,往同一文件中写入内容,如果该文件已经有内容的话,将要写入的内容会自动拼接到原内容后面(不会破坏原文件内容)
但是,如果我们不想保留原有内容的话,在写入内容之前需要进行内容清空,如何实现?
2.方式一(推荐使用)
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
// 创建原文件对象
final File file = new File("C:\\Users\\Marydon\\Desktop\\123-测试记录.txt" );
try {
// 使用FileWriter不需要考虑原文件不存在的情况
// 当该文件不存在时,new FileWriter(file)会自动创建一个真实存在的空文件
FileWriter fileWriter = new FileWriter(file);
// 往文件重写内容
fileWriter.write("");// 清空
fileWriter.flush();
fileWriter.close();
log.info("原文件内容清除完毕");
} catch (IOException e) {
e.printStackTrace();
}
2021-05-21
当文件处在使用中的时候,以*.log文件或者*.txt文件为例,不影响对文件内容的变更操作。
之前的日志内容已被清空。
说明:
获取日志文件所在路径,可以设置成动态获取。
具体实现,见文末操作。
3.方式二
// 创建原文件对象 final File file = new File( "C:\\Users\\Marydon\\Desktop\\123-测试记录.txt" ); // 方式二:删除原文件、创建新文件 // 原文件存在即删除 if (file.exists()) file.delete(); try { // 创建新(空)文件(原文件不存在时,才会创建成功) file.createNewFile(); log.info( "文件已被重新创建" ); } catch (Exception e) { e.printStackTrace(); }
使用前提:原文件不能被其它地方或程序占用。
无论什么样的文件,以日志文件为例,当项目启动后,指定将日志输出到sys.log中,此时,使用方式二将原文件删除,然后创建新文件的方式并不会生效。
注意:
至于输入中文导致的乱码问题不在本文的处理范围内,创建文件的字符集由操作系统决定,详见文末推荐。
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/14754074.html