标签:java java-7 try-with-resources writer
我想在每次发生事件时将(附加文本)记录到文件中.我发现这可能是使用Java 7的try-with-resources语句执行此操作的正确方法:
public void log(String textLine) {
try(PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("Logfile.txt", true)))) {
output.println(textLine);
}catch (IOException e) {
//exception handling
}
}
我担心的是这个日志方法被频繁调用,输出被关闭并在每次调用此方法时重新打开,这是不必要的.与此同时,我希望受益于Java 7的try-with-resources语句功能.
我的担忧不是必要的,因为重新打开和关闭作家并不是一项昂贵的操作吗?或者我应该使用Java 6的老式方法,即手动处理异常并将输出声明为成员字段并在应用程序结束时手动关闭输出?
解决方法:
不,每次要在日志文件中添加新行时,都不应打开和关闭FileWriter.
你应该:
>在应用程序开始时打开日志文件
>追加它
>调用flush()
>最后调用close().
或者如果要使用try-with-resources语句,则应将调用logger方法的代码放在try-with-resources语句的主体内.多亏了这一点,您将不必调用close()方法,因为它将自动调用.
然而,最好的解决方案是,使用现有的经过实战考验的开源记录器(如log4j或logback),而不是重新安装车轮,这些记录器涵盖所有这些内部细节,并公开一个简单的API,允许您只需记录提供的消息.
标签:java,java-7,try-with-resources,writer 来源: https://codeday.me/bug/20190612/1222720.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。