使用 Java 从二进制文件中读取整数值

2024-01-04

我正在尝试使用写入大于 256 的值DataOupPutStream.write()方法。当我尝试使用读取相同的值时DataInputStream.read()它将返回 0。所以,我用了DataOutputStream.writeInt() and DataInputStream.readInt()方法来写入和检索大于 256 的值,并且工作正常。

请参阅下面的代码片段,我想知道编译器的行为,就像它在in.readInt()在 - 的里面while陈述。

FileOutputStream fout = new FileOutputStream("T.txt");
BufferedOutputStream buffOut = new BufferedOutputStream(fout);
DataOutputStream out = new DataOutputStream(fout);

Integer output = 0;
out.writeInt(257);
out.writeInt(2);
out.writeInt(2123);
out.writeInt(223);
out.writeInt(2132);
out.close();

FileInputStream fin = new FileInputStream("T.txt");
DataInputStream in = new DataInputStream(fin);

while ((output = in.readInt()) > 0) {
    System.out.println(output);
}

我运行此代码片段时的输出是:

Exception in thread "main" java.io.EOFException
    at java.io.DataInputStream.readInt(Unknown Source)
    at compress.DataIOStream.main(DataIOStream.java:34)
257
2
2123
223
2132

但是当我在调试模式下运行时,我得到以下输出:

2123
223
2132
Exception in thread "main" java.io.EOFException
    at java.io.DataInputStream.readInt(Unknown Source)
    at compress.DataIOStream.main(DataIOStream.java:34)

readInt() 方法与其他方法一样。您将收到 EOFException,因为这就是 readInt() 的 Javadoc 所说的当您到达文件末尾时将会发生的情况。


当我跑步时

DataOutputStream out = new DataOutputStream(new FileOutputStream("T.txt"));
out.writeInt(257);
out.writeInt(2);
out.writeInt(2123);
out.writeInt(223);
out.writeInt(2132);
out.close();

DataInputStream in = new DataInputStream(new FileInputStream("T.txt"));
try {
    while (true) 
        System.out.println(in.readInt());
} catch (EOFException ignored) {
    System.out.println("[EOF]");
}
in.close();

我在正常和调试模式下得到这个。

257
2
2123
223
2132
[EOF]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 从二进制文件中读取整数值 的相关文章

随机推荐

  • 具有不同列名的 pandas 数据帧上的 pd.corrwith

    我想以有效的方式获得 x1 和 y 中三列中每一列之间的皮尔逊 r 看来 pd corrwith 只能计算具有完全相同列标签的列 例如x 和 y 这似乎有点不切实际 因为我认为计算不同变量之间的相关性将是一个常见问题 In 1 import
  • 在Java中清除控制台屏幕[重复]

    这个问题在这里已经有答案了 是否有任何选项可以像 C 中的 clrscr 一样清除 Java 中的控制台屏幕 作为肮脏的黑客 我喜欢 msparer 的解决方案 我见过的一种更肮脏的方法 我自己永远不会这样做 我发誓 真的 是向控制台写入一
  • jQuery 未加载

    我正在使用 php 当我在谷歌服务器上使用 jquery 1 3 2 min js 时 它会加载并且一切运行正常 但是当我尝试使用我下载到我的服务器上的那个时 Firebug 给了我这个 1 2 3 4 5 h1 Forbidden h1
  • 更快的 numpy 笛卡尔到球坐标转换?

    我有来自 3 轴加速度计 XYZ 的 300 万个数据点数组 我想向包含等效球面坐标 r theta phi 的数组添加 3 列 下面的代码可以工作 但看起来太慢了 我怎样才能做得更好 import numpy as np import m
  • Python 从文件读取到多个列表

    我不认为有人可以指出我正确的方向 我有点想知道如何最好地从文本文件中提取值 然后将它们分解并将它们放回到与相应值相同的位置的列表中 抱歉 如果这还不清楚 也许这会让它更清楚 这是输出文件的代码 while loop with open va
  • 大文件的 Windows fsync (FlushFileBuffers) 性能

    来自有关确保数据位于磁盘上的信息 http winntfs com 2012 11 29 windows write caching part 2 an overview for application developers http wi
  • 如何在 Expect 脚本中访问环境变量?

    我想访问 Expect 脚本内的 PATH 环境变量 我怎样才能做到这一点 我的实际脚本是 usr bin expect set timeout 300 send echo PATH r 它的输出是 can t read PATH no s
  • 未从 cordova apk 加载本机库

    我正在制作一个 cordova 插件 它将是 jar 文件及其两个 so 依赖项的简单包装器 我之前已经在 Android Studio 的普通 Android 应用程序中尝试过 通过将本机库复制到 jniLibs armeabi 文件夹中
  • 插件 'org.apache.maven.plugins:maven-jboss-as-plugin' 不存在或找不到有效版本

    我遇到了 Jboss AS 7 1 1 最终部署的部署错误 如所述无法连接到远程 localhost 9999 连接超时 Jboss 7 1 1 Final https stackoverflow com questions 1575775
  • iOS 10 应用程序终止时推送通知?

    升级到 iOS 10 后 我遇到了有关推送通知的问题 我使用的是 Swift3 在正常情况下 当应用程序打开或应用程序仍在后台时 一切正常 可以按照我的逻辑接收推送通知和更新数据 但是 当应用程序终止时 当应用程序变为活动状态时 我无法处理
  • 您将如何在多个类别之间共享随机值?

    我想创建一个随机 int 值以在多个类中使用 每次我创建这些类的一组新实例时 我都希望将这个新的随机 int 值用于所有这些实例 但随机值应该是相同的 简而言之 我希望创建一个随机索引 并在多个共同生成数据的类中使用该索引 这个随机值是否应
  • apache-spark 缓存()/持久()的内存消耗

    当我尝试缓存 或持久化 MEMORY ONLY SER 我的 RDD 时 我的 Spark 集群挂起 它运行良好 大约 7 分钟即可计算出结果 如果我不使用cache 我有 6 个 c3 xlarge EC2 实例 4 个核心 每个 7 5
  • 使用以下两个命令安装 docker 时有什么区别?

    当谈到在 centos 上安装 Docker 时 我发现了两种不同的方法 第一个是 yum install docker engine 第二个是 yum install docker io 如果我使用第一个安装了 docker 那么我继续使
  • 没有实体框架的 ASP.NET 身份

    是否可以在不使用实体框架的情况下使用新的 ASP NET Identity 而是使用您自己的方法 我有一个 MVC 项目 它使用普通的 ADO NET 进行数据访问 我想实现 ASP NET 身份 但我想继续使用 ADO NET 和存储过程
  • Grunt 多任务在构建时抛出 EISDIR 错误

    我正在尝试设置 grunt 来缩小 src 目录中的一些 js 文件并将它们复制到构建目录 继grunt 任务文档 https github com gruntjs grunt wiki Configuring tasks 我相信下面的配置
  • 如何将单元素列表转换为java 8可选

    如何很好地将包含一个或零个元素的列表转换为可选 丑陋的代码 List
  • 布尔读写在 Swift 中是否能保证原子性?

    假设我有一个应用程序正在从一个线程写入布尔值并从另一个线程读取相同的布尔值 我不在乎我的阅读线程是否读取过时的值 这在所有 ARM 内核和 x86 上安全吗 我不想遇到一个问题 即我的读取线程读取了部分写入的值 后续问题 哪些 swift
  • 阻止 geom_密度_ridges 显示不存在的尾部值

    当我使用geom density ridges 该图通常最终会显示数据中不存在的值的长尾 这是一个例子 library tidyverse library ggridges data lincoln weather Remove all n
  • 从 ASP.Net Core OData 项目中 Swashbuckle 生成的 Swagger 架构中排除某些模型

    我正在使用 Swashbuckle 为我的 ASP Net Core 3 1 OData 项目生成 Swagger 文档 控制器方法的生成是完美的 它基于模型正确生成模式 除了一件事 对于架构中的每个模型 它还会生成一个额外的 ModelN
  • 使用 Java 从二进制文件中读取整数值

    我正在尝试使用写入大于 256 的值DataOupPutStream write 方法 当我尝试使用读取相同的值时DataInputStream read 它将返回 0 所以 我用了DataOutputStream writeInt and