文件的复制
来源:互联网 发布:深圳平湖淘宝客服招聘 编辑:程序博客网 时间:2024/04/30 09:40
要求:复制一个大小为108MB的视频文件
代码如下:
public class TestDemo {public static void main(String[] args) throws IOException {long start = System.currentTimeMillis();RandomAccessFile raf = new RandomAccessFile("wangqing.rmvb","r");RandomAccessFile des = new RandomAccessFile("wq.rmvb","rw");/** * int read(byte[] buf) * 若返回值为-1,则说明没有数据可读了 */byte[] arr = new byte[1024*10];//每次读取10KBint len = -1;while((len = raf.read(arr)) != -1){//根据当前指针所在位置连续写出给定数组中部分字节 void write(byte[] d,int offset,int len)des.write(arr,0,len);//最后一次读取数据可能不足arr.length,所以只写入读取的部分}long end = System.currentTimeMillis();raf.close();des.close();System.out.println("复制108MB的视频文件耗时:"+(end - start)+"ms");}}测试结果如下:
复制108MB的视频文件耗时:287ms
比较两种不同的复制文件的方法:
/** * 要求用户输入一个文件名,并复制当前目录中该文件,并取名为"原文件名_copy.后缀名" * 定义两个方法分别使用单字节形式复制,以及字节数组形式复制 */代码如下:
public class Test07 {public static void main(String[] args) throws IOException {Scanner scan = new Scanner(System.in);System.out.println("请输入文件名:");String input = scan.nextLine().trim();File file = new File(input);if(!file.exists()){System.out.println("文件不存在");return;}//单字节复制Test07 c1 = new Test07();c1.copy1(input);//字节数组形式复制Test07 c2 = new Test07();c2.copy2(input);}/** * 使用单字节方式复制 * @param name 要复制的文件名 * @throws IOException */public void copy1(String name) throws IOException{RandomAccessFile raf = new RandomAccessFile(name,"r");int num = name.indexOf(".");String str = name.substring(0, num)+"_copy."+name.substring(num+1);//利用split(方法也可以得到)//String names[] = name.split("\\.");//RandomAccessFile desc = new RandomAccessFile(names[0]+"_copy."+names[1],"rw");RandomAccessFile des = new RandomAccessFile(str,"rw");int d = -1;while( (d = raf.read()) != -1 ){des.write(d);}System.out.println("复制完毕");raf.close();des.close();}/** * 使用字节数组形式复制 * @param name 要复制的文件名 * @throws IOException */public void copy2(String name) throws IOException{RandomAccessFile raf = new RandomAccessFile(name,"r"); int num = name.indexOf(".");String str = name.substring(0, num)+"_copy."+name.substring(num+1);RandomAccessFile des = new RandomAccessFile(str,"rw");byte[] sub = new byte[1024*10];//10KBint len = -1;while((len = raf.read(sub)) != -1){des.write(sub, 0, len);}System.out.println("复制完毕");raf.close();des.close();}}
0 0
- 文件的复制
- DELPHI文件的复制
- 文件的复制
- 文件的复制
- C++ ------------------------- 文件的复制
- 文件的复制
- iOS文件的复制
- JAVA 文件的复制
- 文件的复制
- 文件复制的疑惑
- 文件的复制io
- Linux文件的复制
- 文件的复制
- java 文件的复制
- 文件的复制
- Linux文件的复制
- 文件的复制
- 实现文件的复制
- Java实现Html转PDF
- FFmpeg播放视频类,可复用
- UVa10237 Bishops
- HData——ETL 数据导入/导出工具
- window下设置多个用户远程连接
- 文件的复制
- BindingException: Invalid bound statement (not found) 错误解决办法
- 【Unity&Shader】遮罩效果黑暗
- 代码规范(草案)
- bzoj 1874: [BeiJing2009 WinterCamp]取石子游戏 Nim游戏+SG函数
- 【BZOJ4521】手机号码,数位dp
- Storm1.0新版本特性
- CDH集群中YARN的参数配置
- WebStorm12配置react-native运行命令