Как подсчитать количество целых чисел в этом файле, используя Java? - PullRequest
0 голосов
/ 08 сентября 2018

Если у меня есть заданный файл .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, что не совпадает. Я думаю, что это может быть связано с дополнительными данными, относящимися к файлам, не связанными с содержанием.

Первый метод хорош, но он очень неэффективен для больших файлов. Любая идея, как я могу ускорить процесс и получить количество целых чисел эффективно?

1 Ответ

0 голосов
/ 08 сентября 2018

Если вы хотите узнать, сколько раз вы можете прочитать 32-разрядное целое число из определенного двоичного файла, ответом будет метод 2.

Вы не должны читать свой файлчерез DataInputStream, если вы не уверены, что он был записан через DataOutputStream, потому что тогда это не просто простой двоичный файл: вместо этого он становится объектным файлом Java , который будет содержать много служебных данных с каждым записанным объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...