binaryreader java_Java从文件中读取结构化二进制数据

我最近开始学习Java,因为我真的是那种在手中完成任务的人,我决定用一个用C#编写的小应用程序来创建Java中的等价物 .

也许我应该从较小的任务开始,但是因为我已经开始设计它(C#应用程序编写得不是很好,因此在功能方面创建了一个等效的应用程序,而不是设计和结构),我不想放弃我的想法 .

嗯,正如你现在可能已经意识到的那样,读到这个,我被困住了 . 该应用程序是一种编辑器,它对存储在二进制文件中的数据起作用 . 我目前无法弄清楚的是如何阅读这个文件(有一件事是阅读)和解析(提取)我需要的数据 . 我知道这个文件的结构 . 所以这是我正在寻找的东西:

如何访问存储在文件中的二进制数据(在C#中我会使用BinaryReader)

如何处理Java中不可用的基元(uint8_t,uint16_t,因为文件是在C中创建的)

编辑

我应该也提到我可能需要在处理之前将整个文件加载到内存中!该文件是2MB .

在处理二进制文件和流时,我通常会迷路:x

编辑2

我想在此期间我想出来了 . 我需要首先验证4字节签名 . 所以我这样做:

byte[] identifier = {'A', 'B', 'C', 'D'};

fs = new FileInputStream(filename);

byte[] extractedIdentifier = new byte[4];

if(4 != fs.read(extractedIdentifier)) {

throw new Exception();

}

if(!Arrays.equals(identifier, extractedIdentifier)) {

throw new Exception();

}

FileChannel fc = fs.getChannel();

MappedByteBuffer buf = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

由于我刚刚开始阅读此内容,使用此方法有任何副作用吗?有一个更好的方法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值