Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java计算此文件中的整数数?_Java_Io - Fatal编程技术网

如何使用Java计算此文件中的整数数?

如何使用Java计算此文件中的整数数?,java,io,Java,Io,如果我有一个给定的.dat文件要读取,我如何计算32位整数的数量?我用两种不同的方法得到了两个不同的答案 第一种方法: int size = 0; try (DataInputStream Input = new DataInputStream( new BufferedInputStream(new FileInputStream(file.getFD())))){ while (true) { file.skipBytes(4); si

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

第一种方法:

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,这是不一样的。我认为它可能包括与内容无关的额外文件相关数据


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

如果你想知道多少次,你能从某个二进制文件中读取32位整数吗?方法2是肯定的答案


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

您可以“标记化”当你阅读这些行时,如果它是一个“文本”文件;评估标记以发现它是否为整数…然后计算出现次数。您能解释为什么这两种方法的大小不同吗?我想对于二进制文件,实际文件大小可能包含不属于内容的数据,因此实际读取的32位整数的数量可能会更小?首先:文件的格式是什么?它是包含普通的32位字,还是包含序列化的Java对象?