欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaNio Filechannel

程序员文章站 2022-06-02 23:50:23
...

例子

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousFileChannel;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.concurrent.Future;


public class Pathss {
	public static void main(String[] args) throws IOException {
		RandomAccessFile input=new RandomAccessFile("E://output.txt","rw");//一定要用RandomAccessFile 不然有些通道的功能无法实现
		FileChannel chan=input.getChannel();//获取通道
		ByteBuffer buff=ByteBuffer.allocate((int)chan.size());//设置ByteBuffer的capacity(内存最大值)为文件的字节长度
		buff.clear();//清空缓存,切换成读模式(capacity和limit值一样) 
		chan.read(buff);//读取  position值从0开始慢慢递增
		byte[] bytes=new byte[buff.limit()];//长度为position的值一样
		buff.flip();//切换成写模式 position变为0 capacity不变 limit变为读模式时position最后的位置
	    buff.get(bytes);//写入byte数组中 ,position慢慢递增
	    System.out.println(new String(bytes));
	    input.close();
	}
}

具体的limit position capacity含义请到这里看。http://ifeve.com/buffers/