Как прочитать все данные из потока данных цикла - PullRequest
0 голосов
/ 24 мая 2018

Я только начал работать с файлами данных в 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();
}

Когда я пытаюсь таким образом, он показывает мне именно то, что я хочу, но с такой ошибкой:

szampon8.80 120

Исключение в потоке "main" java.io.EOFException

zel 9.23 300

pasta 12.99 140 в java.base / java.io.DataInputStream.readUnsignedShort (DataInputStream.java:345) в java.base / java.io.DataInputStream.readUTF (DataInputStream.java:594) в java.base / java.io.DataInputStream.readUTF (DataInputStream.java:569) в com.company.Main.main (Main.java:13)

Процесс завершен с кодом выхода 1

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

надеюсь, что это поможет вам @ 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();
0 голосов
/ 24 мая 2018

Внесите это изменение

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, поэтому вам необходимо проверить, есть ли байты для чтения.

...