您的位置:首页 > 编程语言 > PHP开发

FileInputStream和FileOutputStream字节流的两种读写方式效率对比

2016-09-11 14:27 507 查看
 第一种读写方式:单个字节写入输出流

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.stream.FileImageInputStream;

public class FileInputStreamOut
{

public static void main(String[] args)
{
try {
FileCopyUtil.copyFile(new File("H:\\Haige\\陈翔 - 烟火.mp3"), new File("H:\\gei\\陈翔 - 烟火.mp3"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

class FileCopyUtil
{
public static void copyFile(File src,File dst)throws IOException//从原文件拷贝到目标文件
{
FileInputStream fis=new FileInputStream(src);//到指定的文件中读取数据
FileOutputStream fos=new FileOutputStream(dst);//指定文件输出数据
long time1=System.currentTimeMillis();
int data=-1;
while((data=fis.read())!=-1)
{
fos.write(data);//往要输出文件写数据
}
fos.close();
fis.close();
long time2=System.currentTimeMillis();
System.out.println("复制完成,共花费:"+(time2-time1)+"毫秒");
}
}

运行结果(拷贝音乐文件所需时间):

复制完成,共花费:44599毫秒

第二种读写方式:先将数据写入缓冲区,等缓冲区中的数据满了,再将缓冲区中的数据写入对应的输出流中

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.stream.FileImageInputStream;

public class FileInputStreamOut
{

public static void main(String[] args)
{
try {
FileCopyUtil.copyFile(new File("H:\\Haige\\陈翔 - 烟火.mp3"), new File("H:\\gei\\陈翔 - 烟火.mp3"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

class FileCopyUtil
{
public static void copyFile(File src,File dst)throws IOException//从原文件拷贝到目标文件
{
FileInputStream fis=new FileInputStream(src);//到指定的文件中读取数据
FileOutputStream fos=new FileOutputStream(dst);//指定文件输出数据
byte []buf=new byte[1024*1024];//创建1M大小的缓冲区,用来存放输入流中的字节
int len=0;//用来保存实际读到的字节数
long time1=System.currentTimeMillis();
while((len=fis.read(buf))!=-1)//没有读到文件的末尾
{
fos.write(buf, 0, len);//实际读到的字节数
}
fos.close();
fis.close();
long time2=System.currentTimeMillis();
System.out.println("复制完成,共花费:"+(time2-time1)+"毫秒");
}
}

运行结果(拷贝音乐文件所需时间):

复制完成,共花费:101毫秒




 总结:由上面两种文件读写方式的对比可以看出,第二种方式的读写效率更高一些,可以作为大型数据文件的复制读写的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐