Java DatainputStream的readUTF()方法单独读取文本数据,将报告EOF异常。为什么?

Java DatainputStream的readUTF()方法单独读取文本数据,将报告EOF异常。为什么?,java,Java,我使用datainputstream.readUTF()方法读取包含数据的文本文件,总是EOF异常,我不明白这是为什么 public void readDataDemo() throws IOException { RandomAccessFile randomAccessFile = new RandomAccessFile("temp/buf.txt", "rw"); String str = randomAccessFile.readUTF();

我使用datainputstream.readUTF()方法读取包含数据的文本文件,总是EOF异常,我不明白这是为什么

public void readDataDemo() throws IOException {
        RandomAccessFile randomAccessFile = new RandomAccessFile("temp/buf.txt", "rw");
        String str = randomAccessFile.readUTF();
        randomAccessFile.close();
    }

DataInputStream.readUTF
不适合读取文本文件

它实际上是为读取嵌入(二进制)数据文件中的字符串而设计的。该方法需要的是一个2字节的二进制无符号整数,它给出UTF编码字符串的长度(以字节为单位)。然后是“修改的UTF-8”数据的字节。有关详细信息,请参阅以下链接:

如果尝试使用
DataInputStream.readUTF()
读取常规文本文件,它会将文件中的前2个字符错误地解释为字节计数,然后尝试读取该字节数。根据(假定的)计数和文件大小,可能会尝试读取超过文件结尾的内容。。。导致EOF异常

以下是一些问答,解释了从文本文件中读取文本的一些正确方法:


但请注意,它们都不涉及
DataInputStream
。该类用于读取二进制数据文件,而不是文本文件。

该方法不用于读取文本文件。(你可能想要。)关于你要找的东西,有很多相关的问题,和。