【发布时间】:2013-09-17 17:37:44
【问题描述】:
我仍然是 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;
}
【问题讨论】:
-
您能否为此发布您的代码部分?
-
@Graham 在问题中发布代码并格式化。这样不可读。
-
明白了,谢谢:-)
标签: java fileinputstream