Java: Какова точная функциональность метода buffer.flip ()? - PullRequest
0 голосов
/ 27 сентября 2018

try (FileOutputStream binFile = new FileOutputStream ("data.dat"); FileChannel binChannel = binFile.getChannel ()) {

        ByteBuffer buffer = ByteBuffer.allocate(100);
        byte[] outputBytes = "Hello World!".getBytes();
        buffer.put(outputBytes);
        long int1Pos = outputBytes.length;
        buffer.putInt(245);

        binChannel.write(buffer);

        java.io.RandomAccessFile ra = new java.io.RandomAccessFile("data.dat", "rwd");
        FileChannel channel = ra.getChannel();

        ByteBuffer readBuffer = ByteBuffer.allocate(100);

        channel.position(int1Pos);
        channel.read(readBuffer);
        readBuffer.flip();
        System.out.println("Int3 = " + readBuffer.getInt());
         } catch(IOException e){
         }

1 Ответ

0 голосов
/ 27 сентября 2018

Вы должны проверить документы Java на нем.https://docs.oracle.com/javase/7/docs/api/java/nio/Buffer.html

Сбрасывает этот буфер.Предел устанавливается на текущую позицию, а затем позиция устанавливается на ноль.Если метка определена, то она отбрасывается.После последовательности операций чтения или вставки канала вызовите этот метод, чтобы подготовиться к последовательности операций записи или относительной записи канала.Например:

...