java - 我的字节数组长度不等于文件.txt 文件大小

标签 java byte reader

所以基本上我想做的是让 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/

相关文章:

java - StringTokenizer NoSuchElements

python - 读取 csv 文件中的特定行,python

java - 如何使java运行时相当大的图像框

java - 将 int 转换为字节 - Java 和 Actionscript 中的不同结果

python - 有没有比 int( byte_buffer.encode ('hex' ), 16 ) 更好的方法

linux fifo,当read peer返回时,write peer也会立即返回?

java - Spring Data JPA 之间 findBy/findAllBy 的区别

java - docker 容器上的 websphere liberty

java - 通过 Java 套接字监听端口

c++ double 到字节数组