Files.writeString() 配合 StandardOpenOption.APPEND 和 CREATE 可安全追加日志,需手动添加 System.lineSeparator() 换行,多线程需同步,且必须捕获 IOException。
直接用
配合
可以安全、简洁地向文件末尾追加日志,无需手动管理流或处理换行。
确保使用正确的参数组合
默认会覆盖文件内容。要实现追加,必须显式传入
,并且通常还需加上
(文件不存在时自动创建):
:定位到文件末尾写入,不覆盖原有内容
:若文件不存在,自动创建(否则抛出 NoSuchFileException)
可选添加
(writeString 内部已隐含,一般不用显式写)
注意换行与编码问题
该方法默认使用 UTF-8 编码,适合大多数日志场景;但不会自动添加换行符 —— 这意味着你需要自己拼接
或
:
推荐用
,兼容 Windows/Linux/macOS 换行习惯
例如:
如果连续多次调用,每次都要自己加换行,否则所有日志会挤在一行
避免并发写入冲突
是原子操作,但仅限单次写入。多线程同时追加同一文件时,仍可能出现内容交错(如两行日志被切开混在一起):
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
立即学习
“
Java免费学习笔记(深入)
”;
简单应用可用
块或
控制写入临界区
生产环境建议改用
、Log4j 或 SLF4J + Logback 等成熟日志框架,它们内置了线程安全的文件追加器(如
)
若坚持手写,可封装一个静态同步方法统一处理日志写入
异常处理不可省略
该方法可能抛出
(如磁盘满、权限不足、路径非法),必须捕获并妥善处理:
记录错误本身(可用
或备用日志方式)
避免因日志失败导致主业务中断,除非是关键审计日志
示例中不要忽略异常,也不要只写
到控制台
Files.writeString()StandardOpenOption.APPENDFiles.writeString()StandardOpenOption.APPENDStandardOpenOption.CREATEStandardOpenOption.APPENDStandardOpenOption.CREATEStandardOpenOption.WRITE"\n"System.lineSeparator()System.lineSeparator()Files.writeString(path, "[INFO] Start" + System.lineSeparator(), StandardOpenOption.CREATE, StandardOpenOption.APPEND)Files.writeString()synchronizedReentrantLockjava.util.loggingRollingFileAppenderIOExceptionSystem.err.println()e.printStackTrace()