java 实现字节流和字节缓冲流读写文件时间对比
我就废话不多说了,大家还是直接看代码吧~
packagecn.itcast.copy; importjava.io.BufferedInputStream; importjava.io.BufferedOutputStream; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; /* *文件复制方式,字节流,一共4个方式 *1.字节流读写单个字节125250毫秒 *2.字节流读写字节数组193毫秒OK *3.字节流缓冲区流读写单个字节1210毫秒 *4.字节流缓冲区流读写字节数组73毫秒OK */ publicclassCopy{ publicstaticvoidmain(String[]args)throwsIOException{ longs=System.currentTimeMillis(); copy_4(newFile("c:\\q.exe"),newFile("d:\\q.exe")); longe=System.currentTimeMillis(); System.out.println(e-s); } /* *方法,实现文件复制 *4.字节流缓冲区流读写字节数组 */ publicstaticvoidcopy_4(Filesrc,Filedesc)throwsIOException{ BufferedInputStreambis=newBufferedInputStream(newFileInputStream(src)); BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream(desc)); intlen=0; byte[]bytes=newbyte[1024]; while((len=bis.read(bytes))!=-1){ bos.write(bytes,0,len); } bos.close(); bis.close(); } /* *方法,实现文件复制 *3.字节流缓冲区流读写单个字节 */ publicstaticvoidcopy_3(Filesrc,Filedesc)throwsIOException{ BufferedInputStreambis=newBufferedInputStream(newFileInputStream(src)); BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream(desc)); intlen=0; while((len=bis.read())!=-1){ bos.write(len); } bos.close(); bis.close(); } /* *方法,实现文件复制 *2.字节流读写字节数组 */ publicstaticvoidcopy_2(Filesrc,Filedesc)throwsIOException{ FileInputStreamfis=newFileInputStream(src); FileOutputStreamfos=newFileOutputStream(desc); intlen=0; byte[]bytes=newbyte[1024]; while((len=fis.read(bytes))!=-1){ fos.write(bytes,0,len); } fos.close(); fis.close(); } /* *方法,实现文件复制 *1.字节流读写单个字节 */ publicstaticvoidcopy_1(Filesrc,Filedesc)throwsIOException{ FileInputStreamfis=newFileInputStream(src); FileOutputStreamfos=newFileOutputStream(desc); intlen=0; while((len=fis.read())!=-1){ fos.write(len); } fos.close(); fis.close(); } }
补充:输入流输出流快速读写方式
这是以前整理的,今天看到了,就放到博客中!
importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; publicclassDemo{ publicstaticvoidmain(String[]args)throwsIOException{ //获取开始时间 longstart=System.currentTimeMillis(); //1.创建一个文件字节输入流对象,关联源文件 InputStreamin=newFileInputStream("C:\\Users\\Jack\\temp\\柳岩.jpg"); //2.创建一个文件字节输出流对象,关联目标文件 Filefile=newFile("C:\\Users\\Jack\\myDoc\\ly.jpg"); if(!file.exists()){ //如果文件不存在,就需要创建 FileparentFile=file.getParentFile(); parentFile.mkdirs(); } OutputStreamout=newFileOutputStream(file); //3.读取与写入 byte[]buf=newbyte[1024];//分配1024个字节大小的内存给buf intlen=-1; while((len=in.read(buf))!=-1){ out.write(buf,0,len); } //4.关闭资源 out.close(); in.close(); //获取结束时间 longend=System.currentTimeMillis(); System.out.println("毫秒:"+(end-start)); } }
注:
Filefile=newFile("C:\Users\Jack\myDoc\ly.jpg");
newFile(文件路径名称),方法里面如果只写了文件名。格式,这是绝对路径,位置在当前的工作空间里面。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。