小弟不才,最近在做一个压缩文件的方法,读写效率慢让我为之头疼,于是在网上查了很多资料,才发现缓冲流(很惭愧,学了几年java了居然才用到缓冲流),于是记录下来,希望以后不要再犯此类错误。
废话不多说了,先看测试结果
首先copy一个文件,文件大约为91.9 M
接下来看加缓冲和不添加缓冲的效果
不添加缓冲的
</pre><pre name="code" class="java">public void copy(String inputName,String outName){
FileInputStream inputStream=null;
FileOutputStream outputStream=null;
try {
inputStream=new FileInputStream(new File(inputName));
outputStream=new FileOutputStream(new File(outName));
int BUFFERSIZE = 2 << 10;
int len=0;
byte[] buffer=new byte[BUFFERSIZE];
while((len=inputStream.read())!=-1){
//outputStream.write(buffer, 0, len);
outputStream.write(len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试结果是292517毫秒
增加缓冲的
public void copy(String inputName,String outName){
FileInputStream inputStream=null;
FileOutputStream outputStream=null;
try {
inputStream=new FileInputStream(new File(inputName));
outputStream=new FileOutputStream(new File(outName));
int BUFFERSIZE = 2 << 10;
int len=0;
byte[] buffer=new byte[BUFFERSIZE];
while((len=inputStream.read(buffer,0,BUFFERSIZE))!=-1){
outputStream.write(buffer, 0, len);
//outputStream.write(len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试结果是323毫秒