java 文件、文件夹 递归复制、移动

来源:互联网 发布:gossip协议《算法》 编辑:程序博客网 时间:2024/06/08 20:00
package com.mayflay.utils;import java.io.*;/** * 文件、文件夹 递归复制、移动 * @Author: mihuajun 【kobe96688@126.com】 * @Date: 12/9/2016 10:22 AM */public class FileUtils  {    public static void copy(File sourceFileOrDir,File targetDir) {        verifyExists(sourceFileOrDir);        execute(sourceFileOrDir,targetDir,false);    }    public static void move(File sourceFileOrDir,File targetDir) {        verifyExists(sourceFileOrDir);        execute(sourceFileOrDir,targetDir,true);    }    public static void copyChild(File sourceDir,File targetDir) {        verifyExists(sourceDir);        verifyDir(sourceDir);        for(File item : sourceDir.listFiles()){            execute(item,targetDir,false);        }    }    public static void moveChild(File sourceDir,File targetDir){        verifyExists(sourceDir);        verifyDir(sourceDir);        for(File item : sourceDir.listFiles()){            execute(item,targetDir,true);        }    }    private static void execute(File sourceFileOrDir,File targetDir,Boolean isRemove) {        if(!targetDir.exists())targetDir.mkdirs();        File newTargetFile = new File(targetDir.getAbsolutePath()+File.separator+sourceFileOrDir.getName());        if(sourceFileOrDir.isDirectory()){            newTargetFile.mkdir();            for(File item : sourceFileOrDir.listFiles()){                FileUtils.execute(item,newTargetFile,isRemove);            }            if(isRemove){                sourceFileOrDir.delete();            }            return;        }        FileInputStream fileInputStream = null;        FileOutputStream fileOutputStream = null;        try {            fileInputStream = new FileInputStream(sourceFileOrDir);            fileOutputStream = new FileOutputStream(newTargetFile);            byte[] buff = new byte[1000];            int len = 0;            while((len = fileInputStream.read(buff))!=-1){                fileOutputStream.write(buff,0,len);            }            fileInputStream.close();            fileOutputStream.close();            if(isRemove){                sourceFileOrDir.delete();            }        }catch (Exception e){            e.printStackTrace();        }finally {            if(fileInputStream != null) try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}            if(fileOutputStream != null)try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}        }    }    private static void verifyExists(File file){        if(!file.exists()){            throw new RuntimeException(file.getAbsolutePath()+" is not exists");        }    }    private static void verifyDir(File dir){        if(!dir.isDirectory()){            throw new RuntimeException(dir.getAbsolutePath()+" is not directory");        }    }}
0 0
原创粉丝点击