`

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

    博客分类:
  • Java
 
阅读更多

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

 

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;
	}
}
 
分享到:
评论

相关推荐

    拷贝目录内所有文件到指定目录(exe)

    可以把指定目录下的所有文件(不管里面有多少层的文件夹)拷贝到指定的目录中。 系统要求:Windows 64-bit 使用方法: 1.解压后双击“拷贝目录内所有文件到指定目录.exe” 2.在根目录中输入想拷贝的目录路径 3.在...

    windows下批量拷贝目录下所有文件夹中的指定文件.bat

    windows下批量拷贝目录下所有文件夹中的指定文件,主要是前段时间要从一个server上面拷贝一批数据,但是又不是linux,所以实验了一下windows下的批量拷贝;测序的项目,每一个样本的数据都存放在各自的名称文件夹下...

    01 批量拷贝指定文件.zip

    在IT行业中,批量操作是...总之,这个“01 批量拷贝指定文件”的工具提供了自动化批量拷贝的解决方案,尤其适用于需要在两级目录结构下操作的场景。合理利用此类工具,可以大大提高我们在日常工作中处理文件的效率。

    vc++ 查找指定目录指定类型所有文件

    在VC++编程中,查找指定目录下的...总的来说,VC++查找指定目录下指定类型文件的功能涉及到对Windows API的熟练运用,包括文件系统操作和错误处理。通过不断实践和学习,开发者可以编写出更高效、健壮的文件查找代码。

    易语言复制文件到指定目录

    在易语言中,复制文件到指定目录是一项常见的操作,这在软件开发、数据迁移或备份等场景中十分实用。本篇文章将深入讲解如何使用易语言实现这一功能,并探讨相关知识点。 首先,我们需要理解易语言的基本结构。...

    WPF 拷贝文件到当前目录

    在本场景中,任务是将配置文件从应用的资源或指定位置拷贝到运行时应用的当前目录,以便程序可以访问这些配置文件。下面我们将详细探讨如何在WPF应用中实现这个功能。 首先,我们需要了解WPF应用程序的基本结构。...

    拷贝目录内所有文件到指定目录(重命名为原文件所在文件夹名称)

    可以把指定目录下的所有文件(不管里面有多少层的文件夹)拷贝到指定的目录中。 会重命名为原文件所在文件夹名称!!!如果要保持一致可以下这个:https://download.csdn.net/download/qq_26318597/87640231 系统...

    根据时间拷贝目录文件

    实现按文件的修改时间来筛选,将筛选出的文件拷贝到指定目录文件夹下。(源代码,直接运行) 将指定目录下的所有文件的修改时间大于或等于指定时间的文件拷贝到目标目录的文件夹下;只有指定目录文件夹下文件的修改...

    MFC复制文件到指定目录

    这涉及到目录枚举和递归调用,可以使用CFileFind类来实现。例如: ```cpp CFileFind finder; LPCTSTR srcDir = _T("源文件夹路径\\*"); if (finder.FindFile(srcDir)) { do { if (finder.IsDots()) continue; // ...

    自拷贝指定类型文件系统(后台监视U盘)

    总的来说,"自拷贝指定类型文件系统(后台监视U盘)"是一种结合Windows API实现的智能文件管理系统,它利用设备接口类和文件操作API,实现在用户无感知的情况下,自动检测并复制U盘中特定类型的文件到指定位置。...

    vc实现文件夹从一个目录下拷贝到另一个目录

    ### VC实现文件夹从一个目录下拷贝到另一个目录 #### 概述 在软件开发过程中,经常需要处理文件及文件夹的操作,如复制、移动等。本文将详细介绍如何使用Visual C++(简称VC)来实现文件夹从一个目录复制到另一个...

    复制文件到指定目录.zip

    在C#编程中,复制文件到指定目录是一项常见的任务,特别是在构建软件或处理文件系统操作时。本项目提供了一个简洁的源代码示例,旨在简化这个过程,使其更易于理解和扩展。下面,我们将深入探讨如何在C#中实现这一...

    拷贝某个文件夹及子文件夹下的所有指定文件类型(如jpg)到另一个文件夹下

    - `for /r "%source%" %%i in (*.mp3) do (...)`:这是一个循环结构,用于遍历指定目录(包括子目录)下的所有mp3文件。`/r`参数表示递归搜索子目录,`%%i`是代表当前文件的变量。 - `echo Copying file: "%%i"`:...

    3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件

    为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上的文件和目录。以下将详细讲解如何使用Java API 操作HDFS。 ### 一...

    MFC c++复制文件到指定路径

    在MFC(Microsoft Foundation Classes)框架下,C++程序员经常需要处理文件操作,例如复制文件到指定路径。这个过程涉及到Windows API的使用,因为MFC是构建在Windows API之上的。下面将详细介绍如何在MFC C++环境中...

    Qt实现文件拷贝

    在我们的文件拷贝场景中,`QDirIterator`将特别有用,因为它可以迭代指定目录及其子目录中的所有文件和子目录。 在开始复制文件之前,我们需要创建一个`QThread`对象,这是Qt中的多线程基础。通过继承`QThread`,...

    ava怎么实现找到特定文件夹下的所有目录下的一个文件,并拷贝到指定的目录

    ava怎么实现找到特定文件夹下的所有目录下的一个文件,并拷贝到指定的目录

    Q702697 怎么将一个文件拷贝到指定目录下的所有子文件夹中

    当需要将一个文件拷贝到指定目录下的所有子文件夹中时,这通常涉及到批量复制和递归操作。以下是一些关于如何实现这一目标的详细步骤和知识点: 1. **路径与目录**:在操作系统中,目录是一种组织文件的方式,每个...

    Qt文件或文件夹拷贝

    这段代码遍历源目录中的每个条目,如果是文件则调用`copyFile()`函数进行拷贝,如果是目录则递归调用`copyDirectoryFiles()`函数,从而完成整个目录结构的复制。 在实际项目中,为了提高代码的可维护性和复用性,...

Global site tag (gtag.js) - Google Analytics