New IO 同步非阻塞 IO,是传统 IO(BIO) 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
Path接口:表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径,例如/或者D:\,是否有访问的权限取决于系统
Path path = Paths.get("/etc","1.mov");
文件的读写NIO示例:
FileChannel fcIn = new FileInputStream(new File("文件来源地址")).getChannel();
FileChannel fcOut = new FileOutputStream(new File("文件目标地址")).getChannel();
ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
while (fcIn.read(buffer) != -1){
buffer.flip();
fcOut.write(buffer);
buffer.clear();
}
fcIn.close();
fcOut.close();
文件映射复制NIO示例:
RandomAccessFile in = new RandomAccessFile("文件来源地址", "r");
FileChannel fcIn = in.getChannel();
RandomAccessFile out = new RandomAccessFile("文件目标地址", "rw");
FileChannel fcOut = out.getChannel();
long size = fcIn.size();//输入流的字节大小
MappedByteBuffer inBuffer = fcIn.map(FileChannel.MapMode.READ_ONLY, 0, size);
MappedByteBuffer outBuffer = fcOut.map(FileChannel.MapMode.READ_WRITE, 0, size);
for (int i = 0; i < size; i++){
outBuffer.put(inBuffer.get());
}
fcIn.close();
fcOut.close();
in.close();
out.close();
1066

被折叠的 条评论
为什么被折叠?



