RandomAccessFile неправильно читает целые числа

Итак, я использую RandomAccessFile для записи данных в файл. Поскольку я сжимаю записанные данные с помощью lz4, сначала запишите несжатый размер как целое число в файле, затем сжатый размер как целое число и, наконец, сжатый массив байтов. Однако при чтении двух целых чисел получается нечто совершенно другое. Я написал простой тест, и вот результаты:

    int test = 982364567;

    System.out.println("Writing " + test + " in file...");

    this.clusterData.seek(1);
    this.clusterData.write(test);

    this.clusterData.seek(1);
    System.out.println("Reading " + this.clusterData.readInt() + " from file...");

clusterData — это RandomAccessFile, и вывод в консоли выглядит следующим образом:

Writing 982364567 in file...
Reading -1761607680 from file...

Может ли кто-нибудь объяснить мне, что происходит не так и что мне там не хватает?


person Masy    schedule 22.07.2018    source источник


Ответы (1)


Имейте в виду, что write(int data) означает запись byte, представленную данными. Поэтому он будет писать один байт.

Вам нужно использовать writeInt(int data), чтобы записать полное целое число.

person wargre    schedule 22.07.2018