多语言展示
当前在线:773今日阅读:19今日分享:20

java8中nio通道(Channel)的基本使用

java8中nio通道(Channel)的原理与获取基本使用
工具/原料
1

java8

2

intellij idea

方法/步骤
1

利用通道完成文件的复制@Test    public void test4() throws Exception{        FileChannel inChannel = FileChannel.open(Paths.get('1.jpg'),                StandardOpenOption.READ);        FileChannel outChannel = FileChannel.open(Paths.get('2.jpg'),                StandardOpenOption.WRITE,                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);                //inChannel.transferTo(0,inChannel.size(),outChannel);        outChannel.transferFrom(inChannel,0,inChannel.size());        inChannel.close();        outChannel.close();    }

2

使用直接缓冲区完成文件的复制(内存映射文件)    @Test    public void test2() throws Exception{        FileChannel inChannel = FileChannel.open(Paths.get('1.jpg'), StandardOpenOption.READ);        FileChannel outChannel = FileChannel.open(Paths.get('2.jpg'),StandardOpenOption.WRITE,StandardOpenOption.CREATE_NEW);                //内存映射文件        MappedByteBuffer inMappedBuff =  inChannel.map(FileChannel.MapMode.READ_ONLY,0,inChannel.size());        MappedByteBuffer outMappedBuff = outChannel.map(FileChannel.MapMode.READ_WRITE,0,inChannel.size());                //直接对缓冲区进行数据的读写操作        byte[] dst = new byte[inMappedBuff.limit()];                inMappedBuff.get(dst);        outMappedBuff.put(dst);            }

3

通道之间的数据传输 @Test    public void test4() throws Exception{        FileChannel inChannel = FileChannel.open(Paths.get('1.jpg'),                StandardOpenOption.READ);        FileChannel outChannel = FileChannel.open(Paths.get('2.jpg'),                StandardOpenOption.WRITE,                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);                inChannel.transferTo(0,inChannel.size(),outChannel);    }

4

通道之间的数据传输(直接缓冲区) @Test    public void test4() throws Exception{        FileChannel inChannel = FileChannel.open(Paths.get('1.jpg'),                StandardOpenOption.READ);        FileChannel outChannel = FileChannel.open(Paths.get('2.jpg'),                StandardOpenOption.WRITE,                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);                outChannel.transferFrom(inChannel,0,inChannel.size());    }

5

关闭输入通道连接 @Test    public void test4() throws Exception{        FileChannel inChannel = FileChannel.open(Paths.get('1.jpg'),                StandardOpenOption.READ);        FileChannel outChannel = FileChannel.open(Paths.get('2.jpg'),                StandardOpenOption.WRITE,                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);                outChannel.transferFrom(inChannel,0,inChannel.size());        inChannel.close();    }

推荐信息