Если файл открыт для доступа WRITE байты будут записываться в конец файла, а не в начало.
Если файл открыт для записи другими программами, то это файл зависит от системы, если запись в конец файла является атомарной.
Это правда?
Я тестировал с Только StandardOpenOption.APPEND, и он работает.
Код: Выделить всё
@Test
void __(@TempDir final Path dir) throws Exception {
final var path = Files.createTempFile(dir, null, null);
final var b = ByteBuffer.allocate(12);
try (var channel = FileChannel.open(path, StandardOpenOption.APPEND)) {
while (b.hasRemaining()) {
channel.write(b);
}
channel.force(true);
}
Assertions.assertEquals(Files.size(path), b.capacity());
}
Если файл открыт для доступа ЗАПИСЬ, то байты будут записываться в конец файла, а не в начало.
Подробнее здесь: https://stackoverflow.com/questions/790 ... tion-write
Мобильная версия