这篇文章给大家分享的是有关如何通过JAVA NIO通道传输拷贝文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
通过JAVA NIO 通道传输拷贝文件
方式一
public static void copyFileByChannelTransfer(String sourcePath, String targetPath) { FileChannel inChannel = null; FileChannel outChannel = null; try { //获取通道 inChannel = FileChannel.open(Paths.get(sourcePath), StandardOpenOption.READ); outChannel = FileChannel.open(Paths.get(targetPath),StandardOpenOption.WRITE,StandardOpenOption.READ,StandardOpenOption.CREATE); inChannel.transferTo(0,inChannel.size(),outChannel); } catch (IOException e) { e.printStackTrace(); }finally { //关闭流 try { if (outChannel != null) { outChannel.close(); } if (inChannel != null) { inChannel.close(); } } catch (IOException e) { e.printStackTrace(); } } }
方式二
public static void copyFileByChannelTransfer2(String sourcePath, String targetPath) { FileInputStream fis = null; FileOutputStream fos = null; FileChannel inChannel = null; FileChannel outChannel = null; try { fis = new FileInputStream(sourcePath); fos = new FileOutputStream(targetPath); //获取通道 inChannel = fis.getChannel(); outChannel = fos.getChannel(); inChannel.transferTo(0,inChannel.size(),outChannel); } catch (IOException e) { e.printStackTrace(); }finally { //关闭流 try { if (outChannel != null) { outChannel.close(); } if (inChannel != null) { inChannel.close(); } } catch (IOException e) { e.printStackTrace(); } } }
使用示例
String source = "e:\\demo\\纵天神帝.txt"; String target = "e:\\demo\\"; long time1 = System.currentTimeMillis(); copyFileByStream(source, target + "1.txt"); System.out.println("通过字节流实现文件的拷贝耗时:" + (System.currentTimeMillis() - time1)); long time2 = System.currentTimeMillis(); copyFileByReaderAndWriter(source, target + "2.txt"); System.out.println("通过字符流实现文件的拷贝耗时:" + (System.currentTimeMillis() - time2)); long time3 = System.currentTimeMillis(); copyFileByBuffered(source, target + "3.txt"); System.out.println("通过字节缓冲流实现文件的拷贝耗时:" + (System.currentTimeMillis() - time3)); long time4 = System.currentTimeMillis(); copyFileByBufferedChar(source, target + "4.txt"); System.out.println("通过字符缓冲流实现文件的拷贝耗时:" + (System.currentTimeMillis() - time4)); long time5 = System.currentTimeMillis(); copyFileByChannel(source, target + "5.txt"); System.out.println("通过JAVA NIO通道(非直接缓冲区)实现文件的拷贝耗时:" + (System.currentTimeMillis() - time5)); long time6 = System.currentTimeMillis(); copyFileByChannelBufferd(source, target + "6.txt"); System.out.println("通过JAVA NIO通道(直接缓冲区)实现文件的拷贝耗时:" + (System.currentTimeMillis() - time6)); long time7 = System.currentTimeMillis(); copyFileByChannelTransfer(source, target + "7.txt"); System.out.println("通过JAVA NIO通道传输实现文件的拷贝耗时:" + (System.currentTimeMillis() - time7)); long time8 = System.currentTimeMillis(); copyFileByChannelTransfer(source, target + "8.txt"); System.out.println("通过JAVA NIO通道传输2实现文件的拷贝耗时:" + (System.currentTimeMillis() - time8));
感谢各位的阅读!关于“如何通过JAVA NIO通道传输拷贝文件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!