工作的时候用到的一些方法,在这里记录一下。

public class GetFileList {private static ArrayList<File> fileList = new ArrayList<File>();public static void main(String[] args) throws IOException {String dir = "D:\\testFile\\temp1";String dir2 = "D:\\testFile\\temp2";//File targetFile = new File("D:\\testFile\\temp2");String file_postfix_regex = ".txt";ArrayList<File> matchesFiles = getFileList(dir,file_postfix_regex);// 遍历获取到的文件for (File matchesFile : matchesFiles) {if (matchesFile.isFile()){copyFile(matchesFile,new File(dir2+File.separator+matchesFile.getName()));}if (matchesFile.isDirectory()){// 复制目录String sourceDir = dir + File.separator + matchesFile.getName();String targetDir = dir2 + File.separator + matchesFile.getName();copyDirectiory(sourceDir,targetDir);}}}public static ArrayList<File> getFileList(String filePath,String file_postfix_regex){File file = new File(filePath);Pattern pattern = Pattern.compile(file_postfix_regex);return getFileList(new File(filePath),pattern);}// 递归获取文件private static ArrayList<File> getFileList(File file,Pattern pattern){if(!file.exists()){System.err.println(file + " don't exists.");System.exit(1);}String fileName = file.getName();if(file.isFile()){Matcher matcher = pattern.matcher(fileName);if(matcher.find()){fileList.add(file);}}else if(file.isDirectory()){File[] filesInDirectory = file.listFiles();int length = filesInDirectory.length;for(int i = 0 ; i < length ; i ++){getFileList(filesInDirectory[i],pattern);}}return fileList;}// 复制文件public static void copyFile(File sourceFile, File targetFile) throws IOException {// 新建文件输入流并对它进行缓冲FileInputStream input = new FileInputStream(sourceFile);BufferedInputStream inBuff = new BufferedInputStream(input);// 新建文件输出流并对它进行缓冲FileOutputStream output = new FileOutputStream(targetFile);BufferedOutputStream outBuff = new BufferedOutputStream(output);// 缓冲数组byte[] b = new byte[1024 * 5];int len;while ((len = inBuff.read(b)) != -1) {outBuff.write(b, 0, len);}// 刷新此缓冲的输出流outBuff.flush();//关闭流inBuff.close();outBuff.close();output.close();input.close();}// 复制文件夹public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {// 新建目标目录(new File(targetDir)).mkdirs();// 获取源文件夹当前下的文件或目录File[] file = (new File(sourceDir)).listFiles();for (int i = 0; i < file.length; i++) {if (file[i].isFile()) {// 源文件File sourceFile = file[i];// 目标文件File targetFile = newFile(new File(targetDir).getAbsolutePath()+ File.separator + file[i].getName());copyFile(sourceFile, targetFile);}if (file[i].isDirectory()) {// 准备复制的源文件夹String dir1 = sourceDir + File.separator + file[i].getName();// 准备复制的目标文件夹String dir2 = targetDir + File.separator + file[i].getName();copyDirectiory(dir1, dir2);}}}
}

获取文件夹下的文件,包含子文件夹并复制文件相关推荐

  1. python:复制文件夹及内容(包含子文件夹)到指定目录

    import yaml import os import shutildef copyHistorySession():source_path5048 = r'D:\sourse'target_pat ...

  2. php获得指定目录文件,PHP遍历指定文件夹获取路径及大小(包含子文件夹)

    PHP获取指定文件夹下(包含子文件夹)所有文件路径 及 大小 代码如下: // 获取指定文件夹 所有文件及大小 (包含子文件夹) By [简爱] function JA_files2arr($dirp ...

  3. copy 扩展名 包含子文件夹 文件 到某个 文件夹

    比如我在d:\fff下面有很多子文件夹,子文件夹里还有子文件夹,里面有些文件夹里有.ppm.bz2的后缀的文件,需要把他们找出来复制到d:\fff2里面,应该怎么用批处理写? 最佳答案 1 2 3 4 ...

  4. Java读取文件夹下的指定类型的文件(包含子文件夹)

    java如何获取文件下某种类型的文件呢,本文通过递归筛选实现此功能,代码如下: import java.io.File; import java.util.ArrayList; import java ...

  5. 通过输入ab包名和后缀名自动添加或修改ab包名(同一文件夹下的所有文夹都会被修改包括子文件夹)

    说明 temp = temp.Substring(temp.IndexOf("Assets")); 这段代码主要是获取的文件路径为完整路径,而AssetImporter.GetAt ...

  6. 文件夹里面照片自动分成子文件夹_Windows居然自带这个功能,自动整理你硬盘里的照片...

    今天主要是想跟大家来聊聊本地照片的管理这个话题,当然了,至于你要管理什么照片,任君随意. 不管是手机拍照,还是相机拍照,最终相信大家还是会把照片导入到电脑的本地硬盘来存储. 只是照片多了,想要找照片的 ...

  7. 百度网盘怎么批量改名(包含子文件夹)

    前言 我搞这个东西的原因呢,因为自己需要用到,自己在全网找类似的东西.无论是软件,油猴插件,还是程序的(包括java.php.C#)统统都不行,唯一觉得能跑的就是一篇CSDN的python的代码: 使 ...

  8. python读取文件夹下的文件以及子文件夹中文件

    os.listdir()读取目标文件夹下的文件名和子文件夹名,不会递归读取子文件夹下 names = os.listdir(".\\") for i in names:print( ...

  9. 遍历文件夹(含子文件夹)方法

    做法基本上有2大类: ① 经典Dir ② FSO 即 Scripting. File System Object 的[文件系统对象]脚本方法. 一开始可能Dir方法较为普遍,但随着水平的提高,应用FS ...

最新文章

  1. 怎么将excel中的url批量转化为图片_阿里云+Power BI,轻松实现图片可视化报告(一)...
  2. inline修饰虚函数问题
  3. HP ProLiant 服务器 - 基础知识
  4. STM32F207和DM9161A的以太网实现方案
  5. vue 改变组件data_为什么vue组件中data必须用函数表达?
  6. C语言编程学习的经验
  7. L2-016 愿天下有情人都是失散多年的兄妹 (25 分)深度优先遍历
  8. 【Python】pandas的read_csv参数简略概括(header,path),DataFrame的返回值describe,plot,head
  9. 注释全 新手可懂 可复用式复数计算器C++实现
  10. ubuntu apt-get安装或卸载软件时出现了python-minimal等错误问题的解决方法
  11. [spring源码学习]六、IOC源码-BeanFactory和factory-bean
  12. 计算机硬件科研cpu飞腾,电脑硬件飞腾cpu什么架构
  13. juniper常用命令
  14. 2021-06-27微信公众号模板消息群发
  15. C++计算行列式(函数)
  16. Servlet报错500的问题
  17. UA MATH564 概率论 计算至少有一个发生的概率:Waring公式
  18. C语言练习题:小明排序(数组)
  19. uAvionix 获得 FAA 批准进行 C 波段测试,并继续在几个新地点推出 SkyLine C2
  20. Linux命令:ifconfig出现command not found 的解决办法

热门文章

  1. 1017:浮点型数据类型存储空间大小
  2. 转换上课周次字符串(我带着困惑我一周之久的编程题来了)
  3. 新版标准日本语高级_第7课
  4. java word 批注_Java 添加、回复、修改(替换)、删除Word批注
  5. 衣服不管染上什么,用这招都能洗掉!99%的人不知道!
  6. P1002 过河卒(dp动态规划,洛谷,java)
  7. Apple Watch更懂女人心
  8. 读论文:Fine-grained Image Classification via Combining Vision and Language
  9. 服务器防火墙关闭开机自启解决方案
  10. 路由器的两种工作模式