簡體   English   中英

如何通過循環從datainputstream讀取整個數據

[英]how to read whole data from datainputstream by a loop

我剛剛開始使用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

線程“主”中的異常java.io.EOFException

面板9.23 300

Pasta 12.99 140 at java.base / java.io.DataInputStream.readUnsignedShort(DataInputStream.java:345)at java.base / java.io.DataInputStream.readUTF(DataInputStream.java:594)at java.base / java.io com.company.Main.main(Main.java:13)上的DataInputStream.readUTF(DataInputStream.java:569)

流程以退出代碼1完成

進行更改

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,因此您需要檢查是否有任何字節可讀取。

希望這會對您有幫助@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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM