Итак, я разработал следующую функцию, основанную на документах и примерах, которые я нашел в Интернете, для записи файлов асинхронным способом:
public static Future<Integer> createAndWriteToFile(String fullFileName, String content) throws IOException {
Path file = Utils.createFile(fullFileName);
AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(file, StandardOpenOption.WRITE, StandardOpenOption.CREATE);
ByteBuffer buffer = ByteBuffer.wrap(content.getBytes());
Future<Integer> operation = fileChannel.write(buffer, 0);
buffer.clear();
return operation;
}
Однако нет абсолютно никакой документации о том, что ожидать от звонка operation.get().intValue()
!
В режиме отладки успешное создание / запись файла возвращает целочисленное значение 23.
Каковы другие возможные значения?
Docs:
https://docs.oracle.com/javase/8/docs/api/java/nio/channels/AsynchronousFileChannel.html#write-java.nio.ByteBuffer-long-
И здесь:
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#get--
Возвращает:
вычисленный результат
Полезно, его нет.
В качестве дополнительного вопроса - меня удивило, Java считается одним из наиболее хорошо документированных языков, почему эта функция не документирована?