java的一些开源!
来源:互联网 发布:三星s5选定网络不可用 编辑:程序博客网 时间:2024/06/02 03:16
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferedInput.close();
bufferedOutput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class FileOperatorTest{
public static void main(String args[]){
File src = new File("test.txt");
File dest = new File("copyTest.txt");
try {
if (!dest.exists()){
dest.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
//test copy using FileStream
int startTime = System.currentTimeMillis();
FileOperator.copyWithFileStream(src, dest);
int endTime = System.currentTimeMillis();
System.out.println("Copy file using FileStream takes : " + (endTime - startTime) + " ms.");
//test copy using BufferedStream
startTime = System.currentTimeMillis();
FileOperator.copyWithBufferedStream(src, dest);
endTime = System.currentTimeMillis();
System.out.println("Copy file using BufferedStream takes : " + (endTime - startTime) + " ms.");
}
}
【运行结果】
测试文件大小约为900M,以下是在设定BUFFER_SIZE为不同值时的一次执行结果:
BUFFER_SIZE = 100
Copy file using FileStream takes: 42680 ms.
Copy file using BufferedStream takes: 2407 ms.
BUFFER_SIZE = 8192
Copy file using FileStream takes: 1689 ms.
Copy file using BufferedStream takes: 1654 ms.
BUFFER_SIZE = 1000000
Copy file using FileStream takes: 957 ms.
Copy file using BufferedStream takes: 929 ms.
【对时间效率差异的解释】
BufferedInputStream比FileInputStream多了一个缓冲区,执行read时先从缓冲区读取,当缓冲区数据读完时再把缓冲区填满。
因此,当每次读取的数据量很小时,FileInputStream每次都是从硬盘读入,而BufferedInputStream大部分是从缓冲区读入。读取内存速度比读取硬盘速度快得多,因此BufferedInputStream效率高。
BufferedInputStream的默认缓冲区大小是8192字节。当每次读取数据量接近或远超这个值时,两者效率就没有明显差别了。
BufferedOutputStream和FileOutputStream同理,差异更明显一些。
【结论】
一般情况下,我们应该优先选取BufferedInputStream&BufferedOutputStream。
- java的一些开源!
- Java开源项目的一些理解
- Java 的一些开源系统
- 一些开源java项目
- 一些开源java项目
- JAVA性能优化内存监控的一些开源工具
- JAVA性能优化内存监控的一些开源工具
- 一些实用的 Java / C++ 开源项目整理
- java的一些基本概念
- Java的一些基础知识
- 一些java的知识
- JAVA的一些基本知识
- java 的一些知识
- 一些JAVA的基本概念
- 一些java的基础知识
- 一些java的基础知识
- JAVA的一些基本常识
- java的一些基本概念
- MacBookPro MD103 升级内存
- 突然想聊聊公司最近的变化
- FileInputStream 与 BufferedInputStream 效率对比
- OpenERP-指定动作视图
- 第10条:始终要覆盖toString方法
- java的一些开源!
- c#生成大数据量sql文件_MySql
- 黑马程序员——wpf常用控件常用属性
- POJ 1363
- 如果我的孩子在幼儿园被喂药
- MTD
- mnb x
- 谭谭说要把木鱼强奸了
- Yii学习笔记二