JAVA中IO流字节流复制图片性能优化版
1、代码实现:
package ioStream_prctise;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class ioStream {
public static void main(String args[]) {
InputStream is=null;
OutputStream os=null;
try {
//输入流将文件从D盘输入到内存
is=new FileInputStream(new File("D:\\lanqiao.jpg"));
//输出流将文件从内存输出到E盘
os=new FileOutputStream(new File("D:\\lanqiao3.jpg"));
/*
* 接下来需要一个字节一个字节的去读,Java中的处理机制会将文件的 的每一个字节转化成一个int型的数字。
*/
//建立缓冲数组,进行性能优化
byte[] b=new byte[1024];
while(true) {
int i= is.read(b);//每次可以读取1024个字节,当然有可能小于1024,也有可能大于1024
//当这个int型数字变为-1的时候,表明读取结束
if(i==-1) {
break;
}
//读完以后就开始往里面写了,将b这个字节数组写到内存里面,当b里面的字节数小于1024的时候,写到i个位置就可以了
os.write(b,0,i);
}
} catch (FileNotFoundException e) {
System.out.println("你输入的文件路径是错误的!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("读取异常!");
e.printStackTrace();
}
//使用完IO流之后一定要关闭,可以使用finally类去关闭
finally {
if(is!=null) {
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(os!=null) {
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}