测试字节流有无缓冲流以及读取方式不同的速度(四种)
引言:
分别测试: 有无缓冲流一次读取一个字节以及一次读取一个字节数组 (执行速度)
获取时间:
- currentTimeMillis()
路径:
- 源文件:D:\计算机语言的简单描述.mp4
- 目的地:在当前项目 copy.mp4
@[toc]
1. 字节输出流、输入流_读取一个字节
public static void main(String[] args) throws IOException{
//开始时间
long start = System.currentTimeMillis() ;
method("D:\\计算机语言的简单描述.mp4","copy.mp4");
//结束时间
long end = System.currentTimeMillis() ;
System.out.println("共耗时"+(end-start)+"毫秒");
}
//使用FileInputStream一次读取一个字节
private static void method(String srcString, String destString) throws IOException {
//创建文件字节输入流对象
FileInputStream fis = new FileInputStream(srcString) ;
//文件字节输出流对象
FileOutputStream fos = new FileOutputStream(destString) ;
//一次读取一个字节
int by = 0 ;
while((by=fis.read())!=-1) {
fos.write(by);
}
//释放资源
fos.close();
fis.close();
}
2. 字节输出流、输入流_读取一个字节数组
public static void main(String[] args) throws IOException{
//开始时间
long start = System.currentTimeMillis() ;
method("D:\\计算机语言的简单描述.mp4","copy.mp4");
//结束时间
long end = System.currentTimeMillis() ;
System.out.println("共耗时"+(end-start)+"毫秒");
}
//使用FileInputStream一次读取一个字节数组的方式
private static void method(String srcString, String destString) throws IOException {
//文件字节输入流对象
FileInputStream fis = new FileInputStream(srcString) ;
FileOutputStream fos = new FileOutputStream(destString) ;
//一次读取一个字节数组
int len = 0 ;
byte[] bytes = new byte[1024] ;
while((len = fis.read(bytes))!=-1) {
//写数据
fos.write(bytes,0,len);
}
//释放资源
fos.close();
fis.close();
}
3. 字节缓冲输出流、输入流_读取一个字节
public static void main(String[] args) throws IOException{
//开始时间
long start = System.currentTimeMillis() ;
method("D:\\计算机语言的简单描述.mp4","copy.mp4");
//结束时间
long end = System.currentTimeMillis() ;
System.out.println("共耗时"+(end-start)+"毫秒");
}
//字节缓冲流一次读取一个字节
private static void method(String srcString, String destString) throws IOException {
//创建字节缓冲输入流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcString)) ;
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString)) ;
//一次读取一个字节
int by = 0 ;
while((by=bis.read())!=-1) {
bos.write(by);
}
//释放资源
bos.close();
bis.close();
}
4. 字节缓冲输出流、输入流_读取一个字节数组
public static void main(String[] args) throws IOException{
//开始时间
long start = System.currentTimeMillis() ;
method("D:\\计算机语言的简单描述.mp4","copy.mp4");
//结束时间
long end = System.currentTimeMillis() ;
System.out.println("共耗时"+(end-start)+"毫秒");
}
//字节缓冲流一次读取一个字节数组
private static void method(String srcString, String destString) throws IOException{
//创建字节缓冲输入流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcString)) ;
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString)) ;
//一次读取一个字节数组
int len = 0 ;
byte[] bytes = new byte[1024] ;
while((len = bis.read(bytes))!=-1) {
//写数据
bos.write(bytes,0,len);
}
//释放资源
bos.close();
bis.close();
}
总结
FileInputStream FileOutputStream
一次读取一个字节:共耗时114341毫秒
一次读取一个字节数组:共耗时147毫秒
BuffferedInputStream BufferedOutputStream
一次读取一个字节:共耗时685毫秒
一次读取一个字节数组:共耗时57毫秒