Как читать из канала с ByteBuffer

Это Java советы иллюстрирует метод чтения из канала с ByteBuffer. Разработчик может использовать ByteBuffer для чтения из канала. Tricky частью этой операции является помню правильно определить позицию буфера, до и после чтения.


    try {

        // Obtain a channel

        ReadableByteChannel channel = 

          new FileInputStream("infile").getChannel();

    

        // Create a direct ByteBuffer; see also e158 Creating a ByteBuffer

        ByteBuffer buf = ByteBuffer.allocateDirect(10);

    

        int numRead = 0;

        while (numRead >= 0) {

            // read() places read bytes at the buffer's position so the

            // position should always be properly set before calling read()

            // This method sets the position to 0

            buf.rewind();

    

            // Read bytes from the channel

            numRead = channel.read(buf);

    

            // The read() method also moves the position so in order to

            // read the new bytes, the buffer's position must be 

            // set back to 0

            buf.rewind();

    

            // Read bytes from ByteBuffer; see also

            // e159 Getting Bytes from a ByteBuffer

            for (int i=0; i<numRead; i++) {

                byte b = buf.get();

            }

        }

    catch (Exception e) {

    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>