Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用FileInputStream从二进制文件读取_Java_File_Binary - Fatal编程技术网

Java 使用FileInputStream从二进制文件读取

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.

我开始学习Java I/O。我有一个包含整数数据的二进制文件,我尝试使用
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循环条件?或者你会用不同的方式解决这个问题,谢谢!