java - 从文本文件中读取值

标签 java filereader

请解释以下代码片段中的编译器行为。考虑文本文件包含以下文本 TOBE ,对应的字节值为 84, 79, 66, 69

for(int i=0;i<4;i++){
    byte inByte=(byte) buffInputFile.read();
    system.out.println(inByte);
}

当我运行此代码片段时,我得到以下输出 84 79 66 69

但是当我调试 for 循环并进入其中时。 buffInputFile.read() 首先向我显示 84,当分配给 inByte 时,它​​是 79。我得到的输出是

79,66,69,13(13为回车)。

最佳答案

我怀疑您有一个 buffInputFile.read() 的调试器监视表达式 - 它正在从流中读取值以便显示它...但该值不是当该方法作为代码的一部分执行时可用。您已经从流中读取了该字节,因此下一次调用 read() 将读取下一个字节,正如预期的那样。

一般来说,像这样在调试器中执行具有副作用的方法是一个非常糟糕的主意 - 它恰恰会导致这种困惑。如果您只是在赋值后的行上设置断点,您就可以通过这种方式看到值。

简而言之:这根本不是编译器的行为出现问题 - 这是您使用调试器的方式。

关于java - 从文本文件中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6261454/

相关文章:

java - Jenkins 以及将 iterator-maven-plugin 与多个数据库一起使用

javascript - Chrome 中的 FileReader 错误 - JS

java - 使用 in.hasNextInt() 时,如何跳过同一行后面的字符串?

java - 使用通用实例变量创建单例类?

java - 在Java中调用获取时间的方法

java - 如何使用 Java 从 KML 即时创建 KMZ 文件

javascript - 上传前更改文件内容

来自 Java 的 Javascript - 文档对象

java - 用Java读取.txt文件?

javascript - JavaScript 中 FileReader 的异步/等待问题