java DatainputStream的readUTF()方法单独读取文本数据,将报告EOF异常。为什么?
我使用datainputstream。readUTF()方法读取带有数据的文本文件,总是EOF异常,我不明白这是为什么
public void readDataDemo() throws IOException {
RandomAccessFile randomAccessFile = new RandomAccessFile("temp/buf.txt", "rw");
String str = randomAccessFile.readUTF();
randomAccessFile.close();
}
# 1 楼答案
DataInputStream.readUTF
不适合读取文本文件它实际上是为读取嵌入(二进制)数据文件中的字符串而设计的。该方法需要的是一个2字节的二进制无符号整数,它给出UTF编码字符串的长度(字节)。然后是“修改的UTF-8”数据的字节。有关更多详细信息,请参阅以下链接:
如果试图使用
DataInputStream.readUTF()
读取常规文本文件,它会将文件中的前两个字符错误地理解为字节计数,然后尝试读取该字节数。根据(假定的)计数和文件大小,可能会尝试读取超过文件结尾的内容。。。导致EOF异常以下是一些问题;解释了从文本文件中读取文本的一些正确方法:
但请注意,它们都不涉及
DataInputStream
。该类用于读取二进制数据文件,而不是文本文件