java文件拷贝---将一个相册拷贝到另一个相册

java文件拷贝
将一个相册拷贝到另一个相册
循环将一个目录下的所有图片拷贝到另一个目录下面

package com.wxhl.fsy;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class IODouble {

    /**
     * 循环拷贝图片
     * 1、先循环获取指定目录下所有图片的文件名
     * 2、再循环拷贝图片
     * @param args
     */
    public static void main(String[] args) {

        String origPath = "E:\\其它\\照片\\2015-北京Z君";
        //拷贝到桌面用时:23775毫秒
//      String copyPath = "C:\\Users\\Administrator\\Desktop\\Picture";
        //拷贝到同一个文件夹下用时:6852毫秒
        String copyPath ="E:\\其它\\照片\\newPic";
        String[] filePath = getFilePath(origPath);
        long time = System.currentTimeMillis();
        for (String file : filePath) {

            /**
             * 调用的时候处理异常,用户就可以看到该异常
             */

            try {

                fileCopy(origPath + "\\+1" + file,copyPath + "\\" + file);
            } catch (MyFileNotFoundException e) {

                e.printStackTrace();
            } catch (MyIOException e) {

                e.printStackTrace();
            }
        }
        System.out.println(System.currentTimeMillis() - time);
    }

    /**
     * 获取指定路径下的指定文件名
     * @param filePaths
     * @return
     */
    public static String[] getFilePath(String filePaths){

        String[] filePath;
        filePath = new File(filePaths).list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {

                return (name.endsWith(".jpg") || name.endsWith(".png")) && !(new File(dir + name).isDirectory());
            }
        });
        return filePath;
    }

    /**
     * 单个文件拷贝
     * @param origFile 原文件所在位置
     * @param copyFile 拷贝文件所在位置
     * @throws MyIOException 自定义IO异常
     * @throws MyFileNotFoundException 自定义文件找不到异常
     */
    public static void fileCopy(String origFile,String copyFile)
            throws MyIOException, MyFileNotFoundException{

        InputStream is = null;
        OutputStream os = null;
        try {

            is = new FileInputStream(new File(origFile));//若创建流失败,则抛出异常,在try{}catch{}块中可以捕获
            os = new FileOutputStream(new File(copyFile));
            byte[] bytes = new byte[1024];
            int length = 0;

            while((length = is.read(bytes))!=-1){   

                os.write(bytes, 0, length);
            }

        } catch (FileNotFoundException e) {//既可以在try{}catch{}中捕获异常,又能将异常抛给方法调用者

            e.printStackTrace();
//          throw new MyFileNotFoundException("自定义文件找不到异常");//抛出自定义异常
        } catch (IOException e) {

            throw new MyFileNotFoundException("自定义IO异常");
        }finally{

            try {

                if(is != null){

                    is.close();
                }
                if(os != null){

                    os.flush();
                    os.close();
                }
            } catch (IOException e) {

                throw new MyIOException("自定义流关闭异常");
            }
        }

    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章