java - SpotBugs - 方法忽略 InputStream.read() 的结果
问题描述
我在调试代码时遇到了一些问题,我设法调试了除一个之外的所有错误:
Method ignores results of InputStream.read()
,调试器(SpotBugs)说问题出在了,reader.read(buffer, 0, n)
并建议我检查返回值,否则调用者将无法正确处理读取的字节数少于调用者请求的字节数。
char[] buffer = new char[n];
try{
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
reader.read(buffer,0,n);
reader.close();
}
catch(RuntimeException e) {
throw e;
}
catch(Exception e) {
System.out.println("Something went wrong");
}
for(int i=0;i<buffer.length;i++) {
int swap = i % 2;
if (Integer.toString(swap).equals(Integer.toString(1))) {
buffer[i] = ' ';
}
}
System.out.print(buffer);
我该如何修复这个错误?
解决方案
read()
当与缓冲区一起使用时,返回实际读取的字节数(或 -1 表示流结束)。缓冲区可能没有被单次读取完全填满(尽管缓冲区很小,因为数据是按块传输的),所以你需要确保(即使用while
循环)你已经读取了你想要的字节数至。
推荐阅读
- swift - 如何快速搜索手机联系人
- php - 如何从 __callStatic() 方法中提取 $parameters 数组,以便使用 __ToString() 方法进一步转换为字符串?
- java - 如何处理 webview 缓存
- uwp - ReactiveUI 和 UWP – 这些绑定警告/错误来自哪里?
- azure - 使用 sysprep.exe 概括 azure-vm 失败 [0x0f0085 - 无法加载 DLL]
- java - 尝试在邮递员中验证用户身份 - 获得“403 Forbidden”
- java - Microsoft Graph 更新事件附件未在与会者邀请中更新
- jquery - jQuery 没有验证
- unit-testing - 使用 addFilters = false 模拟 @AuthenticationPrincipal MockMvc
- sparql - SPARQL Wikidata 请求字符串内容以获取人类所属的所有组织?