FileChannel介绍和案例
介绍
文件通道FileChannel是用于读取,写入,文件的通道。FileChannel只能被InputStream、OutputStream、RandomAccessFile创建。FileChannel通过字节流创建,那么操作的缓冲区肯定就是字节缓冲区。
例子:
package FileChannel演示;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class FileChannelDemo1 {
//让FileChannel读取数据到buffer中
public static void main(String[] args) throws IOException {
//创建FileChannel
RandomAccessFile aFile = new RandomAccessFile("D:\\gwt.txt","rw");
FileChannel channel = aFile.getChannel();
//创建Buffer
ByteBuffer buffer = ByteBuffer.allocate(1024);
//读取数据到buff中
int byteRead = channel.read(buffer);
while(byteRead >= 0 ) {
System.out.println("读取了:" + byteRead);
buffer.flip();
while(buffer.hasRemaining()) {
System.out.println((char) buffer.get());
}
buffer.clear();
byteRead = channel.read(buffer);
}
aFile.close();
System.out.println("结束");
}
}
结果:
读取了:17
M
y
n
a
m
e
i
s
g
w
t
a
结束
Buffer常用操作:
- 将数据写入缓冲区
- 调用buffer.flip()反转读写模式
- 从缓冲区读取数据
- 调用buffer.clear()或者buffer.compact()清除缓冲区内容