所以基本上我想做的是让 JProgressBar 从 0-100% 变化,其中 100% 是一个完全读取的 .txt 文件,其中包含 9999 行单词。
我试图通过将分段为字节的巨大字符串存储到字节数组中并使用字节数组的长度更新 JPBar 来实现此目的。
令我惊讶的是,JProgressBar 停在 91% 处。后来我决定打印出这些值,并意识到文件长度比字节数组长度大~10000。
有人可以向我解释一下为什么会出现这种情况以及我怎样才能做到正确吗?我意识到我很可能错过了有关阅读和计算字符的概念。代码片段如下。
谢谢!
bar.setMinimum(0);
bar.setMaximum((int)file.length());
try{
while((check = reader.readLine()) != null){
words = words + check + "\n";
stringCount = words.getBytes();
bar.setValue(stringCount.length);
}
}catch(Exception e){}
System.out.println(stringCount.length);
System.out.println(file.length());
最佳答案
额外的文件内容很可能是 Windows 样式行结尾的其他部分。 Windows 上文件中的标准行结尾是 \r\n
,但内存中的字符串仅包含 \n
。这将累积每行结尾 1 个字符的差异,并且 9999 行与您报告的差异相匹配。
关于java - 我的字节数组长度不等于文件.txt 文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35819759/