对比两种方式复制文件的效率
2019-12-06 16:01:52来源:博客园 阅读 ()
对比两种方式复制文件的效率
package seday03;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* @author xingsir
* RandomAccessFile 复制文件操作
*/
public class CopyDemo {
public static void main(String[] args) throws IOException {
//首先要创建一个test1.txt文件
RandomAccessFile src= new RandomAccessFile("./test1.txt","r");
RandomAccessFile desc= new RandomAccessFile("./test1_copy.txt","rw");
int d = 0;//初始化d的值
long start = System.currentTimeMillis();//记录开始时间
//循环读取test1.txt文件内容
while((d = src.read())!=-1) {//判断当读取出来为-1时,表示数据已经读取完毕,测试就跳出循环
desc.write(d);//写
}
long end = System.currentTimeMillis();//记录结束开始时间
System.out.println("复制完毕!耗时:"+(end-start)+"ms");//耗时为(结束时间-开始时间)
src.close();//关闭
desc.close();//关闭
}
}
//==========================================================================
package seday03;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* @author xingsir
* 由于机械硬盘读写效率差,频繁进行读写复制效率不高。我们可以通过提高每次读写的数据量,减少实际读写的次数从而提高读写效率。
* 单字节读写一般也可称为"随机读写", 一组字节读写也可称为"块读写"
*/
public class CopyDemo2 {
public static void main(String[] args) throws IOException{
RandomAccessFile src= new RandomAccessFile("./test1.txt","r");
RandomAccessFile desc= new RandomAccessFile("./test1_cp.txt","rw");
/*字节间的换算
* 8bit =1byte
* 1024byte =1kb
* 1024kb =1mb
* 1024mb =1gbk
*/
byte[] data=new byte[1024*10];//10k
int len=-1;//表示每次实际读取到的字节量
long start =System.currentTimeMillis();//记录开始时间
/*
* int read(byte[] data)
* 连续读取给定字节数组总长度的字节量,并将读取到的字节存入该数组中。返回值为实际读取到的字节量,
* 我 们应当根据实际读取的字节量判定该数组中本次读取数 据的实际长度。
*
*/
while((len=src.read(data))!=-1) {//每次读取10k的字节量,然后判断长度len,
/*
* void write(byte[] data),一次性将给定字节数组中所有字节写出
* void write(byte[] data,int offset,int len),将给定字节数组从下标
* offset处的连续len个字节一次性写出
*/
desc.write(data,0,len);
}
long end =System.currentTimeMillis();//记录结束开始时间
System.out.println("复制完成毕,耗时"+(end-start)+"ms");//耗时为(结束时间-开始时间)
src.close();//关闭
desc.close();//关闭
}
}
原文链接:https://www.cnblogs.com/xingsir/p/11995267.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝 2020-06-11
- 代码对比工具,我就用这 6 个! 2020-06-10
- Spring Boot 实现定时任务的 4 种方式 2020-06-10
- Java中jar包获取资源文件的方式 2020-06-05
- Kotlin与java8的SAM转换对比 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash