使用Java语言如何实现快速文件复制?
来源:互联网 发布:python执行cmd命令行 编辑:程序博客网 时间:2024/06/05 18:30
今天review代码又看到某个“大神”使用古老的方法来实现文件的复制,今天归结一下使用Java语言如何实现快速文件复制:
代码1——使用文件通道的方式:
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;public class Test {public static void main(String[] args){long start = System.currentTimeMillis();FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; FileChannel inFileChannel = null; FileChannel outFileChannel = null; try { fileInputStream = new FileInputStream(new File("C:\\from\\不是闹着玩的.flv")); fileOutputStream = new FileOutputStream(new File("C:\\to\\不是闹着玩的.flv")); inFileChannel = fileInputStream.getChannel(); outFileChannel = fileOutputStream.getChannel(); inFileChannel.transferTo(0, inFileChannel.size(), outFileChannel);//连接两个通道,从in通道读取数据写入out通道。 } catch (IOException e) { e.printStackTrace(); } finally { try { if(fileInputStream != null){ fileInputStream.close(); } if(inFileChannel != null){ inFileChannel.close(); } if(fileOutputStream != null){ fileOutputStream.close(); } if(outFileChannel != null){ outFileChannel.close(); } } catch (IOException e) { e.printStackTrace(); } }long end = System.currentTimeMillis();System.out.println("视频文件从“from”文件夹复制到“to”文件需要" + (end - start) + "毫秒。");}}
代码运行结果为:
代码2——使用缓冲输入输出流
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class Test {public static void main(String[] args){long start = System.currentTimeMillis();InputStream fileInputStream = null; OutputStream fileOutputStream = null; try { fileInputStream = new BufferedInputStream( new FileInputStream(new File("C:\\from\\不是闹着玩的.flv"))); fileOutputStream = new BufferedOutputStream(new FileOutputStream(new File("C:\\to\\不是闹着玩的.flv"))); byte[] bufferArray = new byte[1024*1024]; int length; while ((length = fileInputStream.read(bufferArray)) != -1) { fileOutputStream.write(bufferArray, 0, length); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(fileInputStream != null){ fileInputStream.close(); } if(fileOutputStream != null){ fileOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } }long end = System.currentTimeMillis();System.out.println("视频文件从“from”文件夹复制到“to”文件需要" + (end - start) + "毫秒。");}}代码运行结果为:
代码3——使用文件输入输出流的方式:
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class Test {public static void main(String[] args){long start = System.currentTimeMillis();FileInputStream fileInputStream = null;FileOutputStream fileOutputStream = null;try{fileInputStream = new FileInputStream(new File("C:\\from\\不是闹着玩的.flv")); //读入原文件 fileOutputStream = new FileOutputStream("C:\\to\\不是闹着玩的.flv"); byte[] bufferArray = new byte[1024*1024]; int length; while ((length = fileInputStream.read(bufferArray)) != -1) { fileOutputStream.write(bufferArray, 0, length); }} catch (IOException e) { e.printStackTrace(); } finally { try { if(fileInputStream != null){ fileInputStream.close(); } if(fileOutputStream != null){ fileOutputStream.close(); }} catch (IOException e) {e.printStackTrace();} }long end = System.currentTimeMillis();System.out.println("视频文件从“from”文件夹复制到“to”文件需要" + (end - start) + "毫秒。");}}代码运行结果为:
代码1、代码2和代码3复制的是相同的文件,通过比较不难得出结论:在文件复制时尽量使用文件输入输出流可能是比较好的办法。
0 0
- 使用Java语言如何实现快速文件复制?
- Java快速复制文件
- 使用mmap即文件映射实现文件的快速复制
- 使用FileChannel(文件通道)来实现文件快速复制
- 【Java】使用Java实现文件复制
- 使用FileChannel来实现文件快速复制(下载)
- JAVA功能代码《12》----使用NIO快速复制文件
- Java实现文件复制
- Java实现文件复制
- java实现文件复制
- Java实现文件复制
- Java实现文件复制
- Java实现文件复制
- java实现文件复制
- Java 实现文件复制
- C语言实现文件复制
- 文件复制 c语言实现
- 文件复制C语言实现
- 那些 iOS 7 中容易被忽视的新特性总结
- 从单词统计问题看面试
- windows如何查看端口占用情况?
- KLR KL15 KL30 KL31 KL50
- 中兴面试总结,华为。技术,市场
- 使用Java语言如何实现快速文件复制?
- 队列相连(队列,链表)
- iOS 8开发:用Swift实现Touch ID验证
- DAWN PROJECT 边角料 1: OpenCV 的 LIB 目录中的库类别说明
- linux v4l2 api
- java 虚拟机内存大小的调整方法
- 第七周项目二 简单计算问题 (1)
- jQuery1.9+中删除了live以后的替代方法
- 自定义进度条