java8
intellij idea
利用通道完成文件的复制@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(); }
使用直接缓冲区完成文件的复制(内存映射文件) @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); }
通道之间的数据传输 @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); }
通道之间的数据传输(直接缓冲区) @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()); }
关闭输入通道连接 @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(); }