![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e169. Reading from a Channel with a ByteBufferThis example uses aByteBuffer to read from a channel. The tricky
part of this operation is to remember to properly set the buffer's
position before and after a read.
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) { }
e167. Persisting Changes to a Memory-Mapped ByteBuffer e168. Determining If a ByteBuffer Is Direct e170. Writing to a Channel with a ByteBuffer e171. Writing and Appending a ByteBuffer to a File e172. Copying One File to Another
© 2002 Addison-Wesley. |