【问题标题】:Read From a Binary file With FileInputStream使用 FileInputStream 从二进制文件中读取
【发布时间】:2015-07-21 00:15:51
【问题描述】:

我开始学习 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();

【问题讨论】:

  • 你用的是什么版本的java?
  • @DasDas 无关。该代码的操作与版本无关。
  • while (true) {...} 将尝试无限执行其代码块。如果您没有任何停止条件(或中断/返回/抛出语句),那么在您读取文件内容后,-1 将一直打印。你需要重新考虑你的循环。顺便说一句,如果您想以文本形式读取数据,请使用 ReaderStreams 用于二进制数据。
  • 是的——但取决于他的 java 版本——我们可以告诉他什么是读取文件的最佳方式
  • @DasDas 他问他为什么一直得到-1。答案与版本无关。

标签: java file binary


【解决方案1】:

看来我没有采取正确的方法,不断得到-1,这意味着文件结束。

确实如此。这意味着文件结束。你应该只得到一次。你不断得到,因为你没有测试它,当你得到它时就打破了循环。

相反,您似乎依赖于捕获该方法从未抛出的 EOFException,

【讨论】:

  • 您建议哪种方法最好地解决问题?改变while循环条件?或者你会以不同的方式解决这个问题吗,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多