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);
}