图片的拷贝-IO流

步骤:
1、图片–>程序–>字节数组
1)图片–>程序 FileInputStream
2) 程序–>字节数组 ByteArrayOutput
2、字节数组–>程序–>图片
1)字节数组–>程序 ByteInputStream
2) 程序–>图片 FileOutputSream

import java.io.*;

/**
 * 1、图片-->程序-->字节数组
 * 2、字节数组-->程序-->图片
 *
 */
public class Picture {

    public static void main(String[] args) {
        byte[] datas = fileToByteArray("E:\\code IDEA\\Java_Basics\\src\\IO流\\1.jpg");
        System.out.println(datas.length);  //测试

        byteArrayToFile(datas,"E:\\code IDEA\\Java_Basics\\src\\IO流\\2.jpg");

    }

    /**
     * 1、图片到程序 InputStream
     * 2、程序到图片 ByteArrayOutputStream
     * @param filePath
     */
    public static byte[] fileToByteArray(String filePath){
        //创建源
        File src = new File (filePath);
        //选择流
        InputStream is = null;

        ByteArrayOutputStream baos = null;

        try {
            is = new FileInputStream(src);
            baos = new ByteArrayOutputStream();
            //缓冲容器,分段读取
            byte[] flush = new byte[1024*5];
            int len = -1;

            while((len = is.read(flush)) != -1){
                baos.write(flush,0,len);
            }
            baos.flush();
            return baos.toByteArray();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return null;

    }

    /**
     * 1、字节数组到程序 ByteArrayInputStream
     * 2、程序到图片 FileOutputStream
     * @param src
     * @param filePath
     */
    public static void byteArrayToFile(byte[] src,String filePath){

        File dest=new File(filePath);

        InputStream is= null ;
        OutputStream os= null;

        is =  new ByteArrayInputStream(src);
        try {
            os = new FileOutputStream(dest);

            byte[] flush=new byte[8];
            int len = -1 ;
            while((len=is.read(flush)) != -1 ){

                os.write(flush,0,len);

            }
            os.flush();



        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(os != null){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

你可能感兴趣的:(java,IO流)