下面的示例演示如何使用FileChannel将某些数据读入Buffer。我们从FileInputStream实例创建一个FileChannel。由于通道将数据读入缓冲区,因此我们需要创建一个ByteBuffer并设置其容量。使用FileChannel.read()方法将数据从通道读取到缓冲区中。
要从缓冲区中读取数据,我们需要先使用Buffer.flip()方法翻转缓冲区。该方法会将缓冲区从写入模式更改为读取模式。读取整个缓冲区后,使用clear()方法调用清除缓冲区。
package org.nhooo.example.io; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class FileRead { public static void main(String[] args) { String path = "D:/Temp/source.txt"; try (FileInputStream fis = new FileInputStream(path); FileChannel fileChannel = fis.getChannel()) { ByteBuffer buffer = ByteBuffer.allocate(64); int bytesRead = fileChannel.read(buffer); while (bytesRead != -1) { buffer.flip(); while (buffer.hasRemaining()) { System.out.print((char) buffer.get()); } buffer.clear(); bytesRead = fileChannel.read(buffer); } } catch (IOException e) { e.printStackTrace(); } } }