Java的简单线程复制文件工具类FileUtil2.0

FileUtil2.0相对于版本1.0,多了很多方法,比如,获取文件的后缀名,或修改后缀名和一些文件的简单操作。

文件复制到文件,文件复制到路径,路径下文件复制到新路径下,代码如下,请享用:

package cn.util;

import Java.io.*;

/**
 * 线程的方式实现文件的复制。
 文件的复制需要四个参数:1,路径或文件),2路径或文件,3,是否覆盖,4,是否追加,
多文件复制还需要加时间参数(毫秒).
 * 以及File类实例的简单创建,
 *
 * @version 2
 * @author JXLYS
 */
public class FileUtil extends Thread {

static class FileUtilHelp {//辅助类

private static FileUtil[] farr = new FileUtil[5];// 线程数量(java默认线程最多10)

// 创建文件并复制
        private static void createFileAndCopy(File f1, File f2, boolean override, boolean append) {
            if (!f2.exists()) {
                createFile(f2, override);
            } else {
                if (!override)
                    return;
                else {
                    append = false;// 覆盖必然不会追加
                }
            }
            FileUtilHelp.createThread(f1, f2, append);
        }

private static void createCopy(InputStream is, OutputStream os) {
            int i = 0;
            for (FileUtil f : farr) {
                if (f == null || !f.isAlive()) {
                    farr[i] = new FileUtil();
                    farr[i].setInputStreamAndOutputStream(is, os);
                    farr[i].start();
                }
                i++;
            }
        }

// 创建路径
        private static void createMkdirs(String path) {
            File f = new File(path);
            if (!f.exists()) {
                f.mkdirs();
            }
        }

// 开始线程
        private static void createThread(File f1, File f2, boolean append) {
            int i = 0;
            for (FileUtil f : farr) {
                if (f == null || !f.isAlive()) {
                    farr[i] = new FileUtil();
                    farr[i].copyThread(f1, f2, append);
                    farr[i].start();
                }
                i++;
            }
        }

}

/**
    * 复制文件1到文件2(可以创建路径)
    *
    * @param f1
    *            文件对象
    * @param f2
    *            文件对象
    * @param override
    *            是否覆盖
    * @param append
    *            是否追加文件内容
    */
    public static void copyFile(File f1, File f2, boolean override, boolean append) {
        if (exists(f1)) {
            FileUtilHelp.createMkdirs(parent(f2));
            FileUtilHelp.createFileAndCopy(f1, f2, override, append);
        }
    }

/**
    * 复制文件1到文件2(可以创建路径)
    *
    * @param fileName
    *            文件1
    * @param fileName2
    *            文件2
    * @param override
    *            是否覆盖
    */
    public static void copyFile(String fileName, String fileName2, boolean override, boolean append) {
        copyFile(newFile(fileName), newFile(fileName), override, append);
    }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ecad5b5f204d7e262e308fcc6821e282.html