如何通过循环从datainputstream读取整个数据

时间:2018-05-24 10:02:20

标签: java loops datainputstream

我刚刚开始使用java中的数据文件而且我不知道如何定义循环来读取整个文件,而不仅仅是一行。我绝对不确定我是否正确思考::

public static void main(String[] args) throws IOException {
    DataInputStream dis = new DataInputStream(new FileInputStream("data.dat"));
    String name = null;
    do  {
        name = dis.readUTF();
        System.out.println(name);
    } while (!name.equals(null));
    dis.close();
}

当我尝试这种方式时,它会向我展示我想要的东西,但是出现了这种错误:

szampon 8.80 120

线程中的异常" main" java.io.EOFException的

zel 9.23 300

意大利面12.99 140     at java.base / java.io.DataInputStream.readUnsignedShort(DataInputStream.java:345)     在java.base / java.io.DataInputStream.readUTF(DataInputStream.java:594)     at java.base / java.io.DataInputStream.readUTF(DataInputStream.java:569)     在com.company.Main.main(Main.java:13)

使用退出代码1完成处理

2 个答案:

答案 0 :(得分:0)

进行此更改

public static void main(String[] args) throws IOException {
DataInputStream dis = new DataInputStream(new FileInputStream("data.dat"));
String name = null;
do  {
    name = dis.readUTF();
    System.out.println(name);
} while ( dis.available() > 0);
dis.close();
}

readUTF方法不会返回null,因此您需要检查是否有可供读取的字节。

答案 1 :(得分:0)

希望这能帮助你@Pawel

DataInputStream dis = new DataInputStream(new FileInputStream("data.dat"));
StringBuffer inputLine = new StringBuffer();
String tmp;
while ((tmp = dis.readLine()) != null) {
     inputLine.append(tmp);
     System.out.println(tmp);
}
dis.close();