java 读取二进制文件_用Java读取二进制文件

我有一个相对较长的无符号整数文件(每个64位,0.47GB文件),我需要读取并存储在一个数组中.经过一段时间的脑力劳动后,我终于使用了这种类型,因为Java中的所有内容都已签名(请纠正我,如果我错了,请),我想不出更好的选择.无论如何,只需要对数组进行排序,因此原始数字的精确值并不是最重要的.我们应该测量排序算法的效率,仅此而已.然而,当我真正来阅读文件时,我遇到了一堵砖墙(我的代码如下).

public class ReadFileTest {

public static void main(String[] args) throws Exception {

String address = "some/directory";

File input_file = new File (address);

FileInputStream file_in = new FileInputStream(input_file);

DataInputStream data_in = new DataInputStream (file_in );

long [] array_of_ints = new long [1000000];

int index = 0;

long start = System.currentTimeMillis();

while(true) {

try {

long a = data_in.readLong();

index++;

System.out.println(a);

}

catch(EOFException eof) {

System.out.println ("End of File");

break;

}

}

System.out.println(index);

System.out.println(System.currentTimeMillis() - start);

}

}

它会一直持续下去,我通常会在节目阅读时走出去吃午饭.总共20分钟是迄今为止我所取得的最快成绩.今天的一位高级球员吹嘘自己的节目在4秒内完成.他在C工作,我知道C比Java快,但这很荒谬.有人可以告诉我这里我做错了什么.我不能责怪语言或机器,所以一定是我.但是,从我所看到的,Java教程使用完全相同的类,即DataInputStream.我也看过FileChannels被推荐了几次.他们是唯一的出路吗?

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值