package com.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
/**
* InputStream 往里读
* OutputStream 往外写
* 复制图片必须用到字节流
*/
public static void main(String[] args) {
FileInputStream fi = null;
FileOutputStream fo =null;
try {
fi = new FileInputStream("d:/a.jpg");
fo = new FileOutputStream("d:/b.jpg");
//定义用于缓冲的字节数组,大小一般为1024的整数倍
byte[] buf = new byte[1024];
//len用于存放读取的长度
int len = 0;
while((len=fi.read(buf))!=-1){
//把buf数组写入文件中,长度从0到len
fo.write(buf,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(fi!=null)
try {
fi.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fo!=null){
try {
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package com.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedStreamDemo {
/**
* 拷贝Mp3
*/
public static void main(String[] args) {
//创建输入流(读取)对象
BufferedInputStream bi = null;
//创建输出流(写入)对象
BufferedOutputStream bo = null;
try {
//将字节流FileInputStream对象放到BifferedInputStream对象中(缓冲作用)
bi = new BufferedInputStream(new FileInputStream("d:/Kalimba.mp3"));
//将字节流FileOutputStream对象放到BufferedOutputStream对象中(缓冲作用)
bo = new BufferedOutputStream(new FileOutputStream("d:/Kalimbacopy.mp3"));
int len = 0;
//判断是否读到最后
while((len = bi.read())!=-1){
//写入缓冲流
bo.write(len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//对于流关闭必须分开判断分开写
if(bi!=null)
try {
bi.close();
} catch (IOException e) {
e.printStackTrace();
}
if(bo!=null)
try {
bo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}