前面已经简单介绍过 FileChannel,文件通道时阻塞的
RandomAccessFile randomAccessFile =
new RandomAccessFile("F:\\data\\test.txt","rw")){
//获取连接通道
FileChannel fileChannel = randomAccessFile.getChannel();
ByteBuffer buf = ByteBuffer.allocate(48);
//此方法将数据从FileChannel读入缓冲区。 read()方法返回的int告诉缓冲区中有多少字节。 如果返回-1,则到达文件结尾。
int bytesRead = inChannel.read(buf);
FileChannel.write()方法将数据写入FileChannel,该方法将Buffer作为参数。
String newData = test data..." + System.currentTimeMillis();
ByteBuffer buf = ByteBuffer.allocate(48);
//数据写入缓冲
buf.put(newData.getBytes());
//切换为读模式
buf.flip();
//直到没有数据可读
while(buf.hasRemaining()) {
channel.write(buf);
}
channel.close();
调用position()方法能够获取FileChannel对象的当前位置。 也可以通过调用position(long pos)方法来设置FileChannel的位置。
long pos channel.position();
channel.position(pos +32);