Java I/O 字节流 文件复制
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(); } } } }