Java 使用FileInputStream从二进制文件读取
我开始学习Java I/O。我有一个包含整数数据的二进制文件,我尝试使用Java 使用FileInputStream从二进制文件读取,java,file,binary,Java,File,Binary,我开始学习Java I/O。我有一个包含整数数据的二进制文件,我尝试使用FileInputStream从中读取,并在控制台上显示文件的内容。似乎我没有采取正确的方法,继续使用-1,这意味着文件结束。这是我的密码 File f=new File("sunday.dat"); FileInputStream fis=new FileInputStream(f); try { while (true) { number=fis.read(); System.
FileInputStream
从中读取,并在控制台上显示文件的内容。似乎我没有采取正确的方法,继续使用-1,这意味着文件结束。这是我的密码
File f=new File("sunday.dat");
FileInputStream fis=new FileInputStream(f);
try {
while (true) {
number=fis.read();
System.out.println(number);
}
} catch (EOFException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fis.close();
似乎我没有采取正确的方法,继续得到-1,这意味着文件结束
确实如此。它意味着文件的结束。你应该只得到一次。你不断地得到它,因为你没有测试它,当你得到它时,你就打破了循环
相反,您似乎依赖于捕获
EOFEException,
,而该方法从未抛出过该异常。您使用的java版本是什么?@dasda无关紧要。该代码的操作不依赖于版本。而(true){…}
将尝试无限执行其代码块。如果没有任何停止条件(或break/return/throw语句),则在读取文件内容后,将一直打印-1
。你需要重新考虑你的循环。顺便说一句,如果您想以文本形式读取数据,请使用Reader
<代码>流用于二进制数据。是的,但取决于java版本,我们可以告诉他读取数据的最佳方式file@DasDas他问为什么他总是得到-1分。这个问题的答案不依赖于版本。您建议哪种方法是解决问题的最佳方法?更改while循环条件?或者你会用不同的方式解决这个问题,谢谢!