Требуется ли для StandardOpenOption.APPEND StandardOpenOption.WRITE?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Требуется ли для StandardOpenOption.APPEND StandardOpenOption.WRITE?

Сообщение Anonymous »

Согласно документации, StandardOpenOption.APPEND требует StandardOpenOption.WRITE.

Если файл открыт для доступа 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»