如何通过循环从数据输入流中读取整个数据
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
线程异常 "main" java.io.EOFException
zel 9.23 300
意大利面 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
进行此更改
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 方法不会 return 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();
我刚开始处理 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 在 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
进行此更改
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 方法不会 return 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();