在我的Java代码中,我启动一个新进程,然后获取其输入流来读取它:
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
FindBugs在这里报告错误:
may fail to close stream
Pattern id: OS_OPEN_STREAM, type: OS, category: BAD_PRACTICE
我必须关闭另一个进程的InputStream吗?而且,根据its Javadoc,InputStream#close()什么都不做.那么这是一个误报,还是我在完成后真的应该关闭流程的输入流?
解决方法:
在这种情况下,您希望关闭()Reader,它将关闭其底层流.是的,关闭流是一种很好的做法,即使你知道你正在查看的实现没有做任何事情(尽管事实上它确实在这里!).如果后来改变了怎么办?
FindBugs只是警告可能的错误;它不能总是确切知道.
最后是的,您的Java进程拥有您生成的进程和Process对象.你绝对需要关闭它和输出流.没有其他人在使用它们,并且,做这些事情以避免与OS相关的流程有趣的业务是很重要的.
标签:java,stream,findbugs 来源: https://codeday.me/bug/20190730/1582846.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。