首页 > 解决方案 > 如何使用 Java 计算此文件中的整数个数?

问题描述

如果我有一个.dat要读取的给定文件,我如何计算 32 位整数的数量?我使用 2 种不同的方法得到 2 个不同的答案。

第一种方法:

int size = 0;
try (DataInputStream Input = new DataInputStream(
        new BufferedInputStream(new FileInputStream(file.getFD())))){
    while (true) {
        file.skipBytes(4);
        size += 1;
    }
}catch(Exception ex){
    System.out.println(ex);
}
System.out.println(size);

第二种方法:

File fileRead = new File(file);
ret = fileRead.length() / 4

第一种方法可能是最准确的,因为我每次读取 4 个字节并跳过它,以获得按顺序打包在文件中的整数的大小。但是,第二种方法只是给我直接文件大小并除以 4,这是不一样的。我认为它可能包括与内容无关的额外文件相关数据。

第一种方法很好,但是对于大文件来说效率很低。知道如何加快速度并有效地获得整数数量吗?

标签: javaio

解决方案


如果您想多次了解是否可以从某个二进制文件中读取一个 32 位整数,方法 2 是肯定的答案。

DataInputStream除非您确定文件是通过 a 写入的,否则不得通过 a 读取文件DataOutputStream,因为这样它就不仅仅是一个普通的二进制文件:相反,它变成了一个Java 对象文件,其中包含大量开销数据,每个写的对象。


推荐阅读