Значение байта по умолчанию при создании файла с помощью Filechannel # map () - PullRequest
0 голосов
/ 19 июня 2020

Какое значение байта по умолчанию для содержимого файла при создании файла с помощью Filechannel#map()?

Это 0 для каждого байта или неопределенное поведение?

Фрагмент кода следующим образом:

    RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
    FileChannel fileChannel = randomAccessFile.getChannel();
    MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, 1024 * 4);
    mappedByteBuffer.putInt(1);
    mappedByteBuffer.force();

После запуска этой программы я проверил файл и обнаружил, что каждый байт равен 0 , кроме 4-го байта. Это особенность или неопределенное поведение?

1 Ответ

1 голос
/ 19 июня 2020

Ответ находится в документации , т.е. javado c of map():

Многие детали отображения памяти файлы по своей сути зависят от базовой операционной системы и поэтому не определены. Поведение этого метода, когда запрошенная область не полностью содержится в файле этого канала: не указано . Были ли внесены изменения в содержимое или размер базового файла этой программой или другой , распространяются в буфер, не указано. Скорость, с которой изменения в буфере распространяются на файл, не указана.

...