无法将 ANSI 文件读入 java 程序作为 byte[]

Trouble reading in ANSI file to java program as byte[]

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

示例代码:

int count = 0;
BufferedReader in = new BufferedReader(new InputStreamReader(
                                new FileInputStream(inputFile), "windows-1252"));
while((line=in.readLine())!=null)
{
    count+=line.length();
}

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

感谢您的帮助!

ScannerBufferedReader 都为您去掉行尾(回车 return and/or 换行),只 return 行的内容.这些是唯一缺少的控制字符吗?

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