FileChannel channel = FileChannel.open(Path.of("test.txtx"),StandardOpenOption.CREATE,
StandardOpenOption.WRITE, StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(15);
buffer.put("hello world".getBytes());
channel.write(buffer, 0);
ByteBuffer buffer2 = ByteBuffer.allocate(15);
channel.read(buffer2, 0);
System.out.println(new String(buffer2.array())); // ничего не выведет
FileChannel channel = FileChannel.open(Path.of("test.txtx"),StandardOpenOption.CREATE,
StandardOpenOption.WRITE, StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(15);
buffer.put("hello world".getBytes()); // записали в буфер данные
buffer.flip(); // <--- переключили буфер из режима записи в режим чтения
channel.write(buffer, 0); // теперь channel.write сможет прочитать записанные в
// буфере данные и записать их в файл
ByteBuffer buffer2 = ByteBuffer.allocate(15);
channel.read(buffer2, 0); // channel.read прочитал данные из файла и записал их в буфер
buffer2.flip(); // <--- переключаем из записи в чтение
System.out.println(StandardCharsets.UTF_8.decode(buffer2)); // decode читает данные из буфера
// и составляет из них строку
// Здесь ничего не выводилось, потому что без flip ничего и не записалось в файл.
System.out.println(new String(buffer2.array())); // ничего не выведет