Java PrintWriter无法写入的问题
来源:互联网 发布:浙江诸暨淘宝司法拍卖 编辑:程序博客网 时间:2024/05/21 01:49
项目日志出现莫名其妙的缺失,从当天某个时间段之后日志就全部没有了。日志每3秒写入一次,文件最后的修改时间距离日志最后记录的时间相差几分钟,排除人为删除的因素之后,技术层面发现了一些问题。
Writer的创建
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8"));
日志写入
writer.println(data);writer.flush();
检查发现,日志写入时文件是一直被占用的。若强行解除文件占用,就会出现文件无法写入,而且不会抛出异常的问题。初步判断为人为查看日志时意外修改导致文件被解除占用,具体原因不明。
修正方法:写入数据后使用writer.checkError()方法检查是否存在错误,若有,则重新创建writer,将数据再写一遍。
java.io.PrintWriter 此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能需要通过调用 checkError() 检查是否出现错误。java.io.PrintWriter.checkError() 该方法刷新流,如果它尚未关闭,并检查其错误状态。如果打印流在底层输出流或格式转换期间遇到错误,该方法返回true
修正代码:
writer.println(data);if (writer.checkError()){try{createWriter();writer.println(data);if (writer.checkError()){Log.error("日志重建异常!data:" + data);}}catch (Exception e){Log.error("日志写入异常!" + data, e);}}writer.flush();
0 0
- Java PrintWriter无法写入的问题
- PrintWriter写入文件问题【转载综合】
- cookie无法写入的问题
- Java疑问:-------在Socket中用PrintWriter 写入的数据为什么用DataInputStream不能读取?
- java PrintWriter 返回的打印值乱码的问题
- Java: PrintWriter.write 向文本文件中写入换行。
- C++文件操作无法写入的问题
- Android6.0无法写入sd的问题
- NFS文件无法写入的权限问题
- Java Scanner、PrintWriter的用法
- [Java] PrintWriter
- JAVA PrintWriter
- java PrintWriter
- java的TCP编程模型中遇到的PrintWriter、BufferedWriter与readLine()的问题
- PrintWriter、PrintStream的苦头 ------缓冲区问题
- PrintWriter输出中文乱码的问题
- PrintWriter输出中文乱码的问题
- PrintWriter out=response.getWriter()的问题
- maven安装配置
- centos 7 32位下载地址
- android怎么获得,api的debug签名
- Android按钮状态的切换
- ExtJS之Ext.Ajax.request用法详解
- Java PrintWriter无法写入的问题
- MTK源码编译 [gcc]: unknown (64-bit) [FAIL]
- wingIDE5切换python版本
- enum
- 第十三周 项目5拓扑排序
- Linux系统配置开机启动默认进入命令行模式
- pb9 通过ole db连接sqlite3数据库
- Android studio v4 v7 包冲突 解决方案
- Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正