拷贝指定目录下的指定文件类型的文件到指定目录
程序员文章站
2024-03-09 09:59:59
...
拷贝指定目录下的指定文件类型的文件到指定目录
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Properties;
public class CopyTarget {
private static int num = 0;
private String ext; // 后缀名
private String srcDir; // 源目录
private String destDir; // 目标目录
private ArrayList<File> fileList = new ArrayList<File>(); // 符合条件的文件
public static void main(String[] args) {
System.out.println("********* 系统初始化 *********");
CopyTarget ct = new CopyTarget();
ct.copyFiles();
System.out.println("********* 系统处理完 *********");
}
/**
* 获取某目录中指定类型的文件
*
* @param file
* @throws Exception
*/
public void acceptFiles(File file) throws Exception {
if (file.isDirectory()) {// 是不是目录
String[] files = file.list();// 返回该目录下所有文件及文件夹数组
Arrays.sort(files); // 排序
for (int i = 0; i < files.length; i++) {
// 递归
acceptFiles(new File(file, files[i]));
}
} else if (file.getPath().endsWith("." + ext)) {
getFileList().add(file);
// 目录/文件名
System.out.println("Hit target > " + file.getParent() + "/"
+ file.getName());
}
}
public void loadConfig() {
try {
Properties p = new Properties();
p.load(new FileInputStream(new File("copy-config.properties"))); // 得到配置文件
ext = p.getProperty("ext");
srcDir = p.getProperty("srcDir");
destDir = p.getProperty("destDir");
} catch (FileNotFoundException e) {
System.out.println("没有找到任何配置文件!" + e.getMessage());
} catch (IOException e) {
System.out.println("配置文件有错误,请检查!" + e.getMessage());
}
}
public void copyFiles() {
try {
loadConfig();
// 过滤文件
acceptFiles(new File(getSrcDir()));
// 第一层循环是源目录下的所有文件
for (int i = 0; i < this.getFileList().size(); i++) {
File f = this.getFileList().get(i);
File destF = new File(getDestDir() + "//" + f.getName());
BufferedInputStream br = new BufferedInputStream(
new FileInputStream(f));
BufferedOutputStream bw = new BufferedOutputStream(
new FileOutputStream(destF));
byte[] bytes = new byte[br.available()];
int c;
while ((c = br.read(bytes)) != -1) {
bw.write(bytes, 0, c);
}
num++;
bw.flush();
bw.close();
br.close();
System.out.println("> " + num + " 文件 " + f.getName()
+ " 处理完成!");
}
if (num == 0)
System.out.println(">> 找不到任何文件 <<");
} catch (FileNotFoundException e) {
System.out.println("文件没有找到!" + e.getMessage());
} catch (Exception e) {
System.out.println("系统错误 " + e.getMessage());
} finally {
System.out
.println("共处理【" + this.getFileList().size() + "】个符合条件的文件");
}
}
// ////////////////////////////////////////////////////////////////////////
public void setSrcDir(String srcDir) {
this.srcDir = srcDir;
}
public String getSrcDir() {
return this.srcDir;
}
public void setDestDir(String destDir) {
this.destDir = destDir;
}
public String getDestDir() {
return this.destDir;
}
public ArrayList<File> getFileList() {
return fileList;
}
}
上一篇: Java web.xml加载顺序
推荐阅读
-
IO流--多级文件夹下的所有目录复制到指定目录下
-
php将某个指定目录下的所有文件及文件夹删除
-
拷贝指定文件夹里的内容到指定目录下
-
Asp.net 获取指定目录下的后缀名为".doc" 的所有文件名和文件路径
-
Asp.net 获取指定目录下的后缀名为".doc" 的所有文件名和文件路径
-
Java遍历输出指定目录、树形结构所有文件包括子目录下的文件
-
Java遍历输出指定目录、树形结构所有文件包括子目录下的文件
-
python获取指定目录下所有文件的绝对路径
-
PHP解压ZIP文件到指定文件夹的方法
-
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径。