我仍然是 Java 的业余爱好者,边走边学,所以请温柔一点!
论坛说我应该使用 FileInputStream 从文件中读取二进制数据。但是,我的后续解析器无法正确验证数据,因此我从外部程序生成了一个包含连续字符 0 到 255 的测试文件,并使用十六进制读取器验证了这些值......所以我确定它包含我想要的是。我让我的 Java 程序使用 FileInputStream 将文件读入字节数组,然后使用 println 一次打印一个值。某些值 - 特别是 -127、-115、-113、-112 和 -99 - 会转换为 63(相当于问号)。尽我所能尝试我无法获得我期望的值。为什么会发生这种情况,我该如何解决?我正在处理的文件通常是几十兆字节,所以我需要一次性读取文件——逐字节的方法太慢了。TIA。
我的代码:
private static String readFileInputStream(String filename) {
String sContent = null;
File file = new File(filename);
byte[] fileData = new byte[(int)file.length()];
try {
DataInputStream dis = new DataInputStream(new FileInputStream(file));
dis.readFully(fileData);
dis.close(); sContent = new String(fileData);
} catch(IOException e) { }
return sContent;
}