Java递归拷贝文件夹

来源:互联网 发布:学plc编程需要什么基础 编辑:程序博客网 时间:2024/06/03 03:10

拷贝文件或文件夹

/** * 拷贝文件 * * @param source    源文件 * @param target    目标文件 */public void copyFile(String source, String target) {    // 源文件    File sourceFile = new File(source);    if (!sourceFile.exists()) {        return;    }    // 目标文件    File targetFile = new File(target);    // 文件拷贝    if (sourceFile.isFile()) {        copyFromChanel(sourceFile, targetFile);        return;    }    // 文件夹拷贝    if (!targetFile.exists()) {        targetFile.mkdirs();    }    for (File file: sourceFile.listFiles()) {        copyFile(file.getAbsolutePath(), target + File.separator + file.getName());    }}

利用文件管道拷贝文件

/** * 利用文件管道拷贝文件 * * @param source    源文件 * @param target    目标文件 */public void copyFromChanel(File source, File target) {    // 文件流    FileInputStream fis = null;    FileOutputStream fos = null;    // 文件管道    FileChannel fci = null;    FileChannel fco = null;    try {        // 文件流        fis = new FileInputStream(source);        fos = new FileOutputStream(target);        // 文件管道        fci = fis.getChannel();        fco = fos.getChannel();        // 连接两个通道,并且从fci通道读取,然后写入fco通道        fci.transferTo(0, fci.size(), fco);    } catch (IOException e) {        e.printStackTrace();    } finally {        try {            if (fis != null) fis.close();            if (fci != null) fci.close();            if (fos != null) fos.close();            if (fco != null) fco.close();        } catch (IOException e) {            e.printStackTrace();        }    }}
原创粉丝点击