欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

拷贝指定目录下的指定文件类型的文件到指定目录

程序员文章站 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加载顺序

下一篇: