无法在ANSI文件中读取java程序作为byte []

时间:2018-04-17 01:48:57

标签: java file io bufferedreader ansi

我正在尝试阅读此处的数据文件:http://cis.jhu.edu/~sachin/digit/digit.html 在Java中用于图像识别的28x28图像。但是我在加载数据时遇到了一些问题。每个文件中存储1000个28x28图像作为字符列表。当我在notepad ++中打开文件时,它正确显示每个文件中有784,000个字符。但是,当我使用相同的ANSI编码使用BufferedReader或Scanner在java中读取它们时,它们具有较少的字符。具体数量取决于它是哪个文件,但大约是782,500。我手动比较它们,发现我的java输出缺少几个控制字符,所以我假设它们没有被读取。我实际上并不需要字符,只需要字符的无符号字节值。有谁知道如何解决这个问题?

示例代码:

['img']

我的实际代码比这更复杂,但这应该计算字符数并显示比实际数字更低的数量,因为忽略了文件分隔符和数据链接转义等字符。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

ScannerBufferedReader都会为您删除行结尾(回车和/或换行)并返回行的内容。这些是唯一缺少的控制字符吗?

如果需要行结尾,可以使用InputStream::read方法读取文件中的所有数据。还有其他方法可以使用内存映射文件和ByteBuffers,但是你可能不需要这样的东西。