java程序完成目录拷贝工作

背景描述:我目录有140多个,每个目录里面都有一个src目录。我现在想要所有的src目录移动到同一个目录中。


  1. package com.util.cp;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import java.util.concurrent.ExecutorService;
  8. import java.util.concurrent.LinkedBlockingQueue;
  9. import java.util.concurrent.ThreadPoolExecutor;
  10. import java.util.concurrent.TimeUnit;
  11. public class CPfile {
  12. public static ExecutorService customerExecutorService = new ThreadPoolExecutor(10, 10, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
  13. ;
  14. public static void main(String[] args) throws Exception {
  15. File files = new File("D:\\XXX\\XXX\\项目目录");//项目存放目录
  16. File newFile = new File("D:\\src");//新目录
  17. cp1(files, newFile);
  18. }
  19. public static void cp1(File files, File newFile) throws Exception {
  20. int k = 0, j = 0;
  21. ArrayList<File> temp = new ArrayList<File>();
  22. temp.add(files);
  23. for (int i = 0; i < temp.size(); i++) {
  24. if (temp.get(i).isDirectory()) {
  25. File[] list = temp.get(i).listFiles();
  26. if (temp.get(i).getName().endsWith("src")) {
  27. break;
  28. }
  29. for (File file2 : list) {
  30. if (file2.isDirectory()
  31. && !file2.isFile() && !file2.isHidden()
  32. && !file2.getName().contains(".git")
  33. && !file2.getName().contains(".idea")
  34. && !file2.getName().contains("target")
  35. && !file2.getName().contains("lib")
  36. && !file2.getName().contains("aio")
  37. ) {
  38. temp.add(file2);
  39. }
  40. }
  41. }
  42. }
  43. System.out.println(temp.size());
  44. Iterator<File> iterator = temp.iterator();
  45. while (iterator.hasNext()) {
  46. File file = (File) iterator.next();
  47. if (file.getName().contains("src")) {
  48. copy(file, newFile, true);
  49. k++;
  50. System.out.println(file);
  51. }
  52. j++;
  53. }
  54. System.out.println(k + " " + j);
  55. }
  56. public static void copy(File f, File nf, boolean flag) throws Exception {
  57. // 判断是否存在
  58. if (f.exists()) {
  59. // 判断是否是目录
  60. if (f.isDirectory()) {
  61. if (flag) {
  62. // 制定路径,以便原样输出
  63. nf = new File(nf + "/" + f.getName());
  64. // 判断文件夹是否存在,不存在就创建
  65. if (!nf.exists()) {
  66. nf.mkdirs();
  67. }
  68. }
  69. flag = true;
  70. // 获取文件夹下所有的文件及子文件夹
  71. File[] l = f.listFiles();
  72. // 判断是否为null
  73. if (null != l) {
  74. for (File ll : l) {
  75. // 循环递归调用
  76. copy(ll, nf, flag);
  77. }
  78. }
  79. } else {
  80. System.out.println("正在复制:" + f.getAbsolutePath());
  81. System.out.println("到:" + nf.getAbsolutePath() + "\\" + f.getName());
  82. // 获取输入流
  83. FileInputStream fis = new FileInputStream(f);
  84. // 获取输出流
  85. FileOutputStream fos = new FileOutputStream(nf + "/" + f.getName());
  86. byte[] b = new byte[1024];
  87. // 读取文件
  88. while (fis.read(b) != -1) {
  89. // 写入文件,复制
  90. fos.write(b);
  91. }
  92. fos.close();
  93. fis.close();
  94. }
  95. }
  96. }
  97. }

使用java程序完成大量文件目录拷贝工作的更多相关文章

  1. 2017年 Java 程序员,风光背后的危机

    不得不承认,经历过行业的飞速发展期,互联网的整体发展趋于平稳.为什么这么说?为什么要放在 Java 程序员的盘点下说? 的确,对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨 ...

  2. Java程序员如何在竞争中保持优势

    Java程序员入门容易,进阶很难,想要在竞争中保持优势,脚踏实地的同时也要仰望星空规划自己的未来.时间在流逝,年龄在增加,你期望的薪水也在不断增多,你总得让自己能力持续增加以配得上想要的收入吧. 从初 ...

  3. MySQL与Oracle之间互相拷贝数据的Java程序

    因为工作需要,先是需要将一个小型的MySQL数据库中的数据拷贝到Oracle中:近期又有需要将一个中型的Oracle数据库拷贝到MySQL中.曾经找过网上各种转换工具,大多收费的,自己写个吧,还一切可 ...

  4. 【转】优秀的Java程序员必须了解GC的工作原理

    一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应 ...

  5. 优秀Java程序员必须了解的GC工作原理

    一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应 ...

  6. 正式工作的前奏——一个Java程序员的实习总结(1)

    不知不觉,到深圳实习已经三个礼拜了.跟在暑假的三个半月实习不一样,这次收获更多,感受更好,算是摆脱了那次实习给我带来的阴影(这个会放到以后才说). 在知乎上,有这么一个问题,你现在最想跟刚工作时的你说 ...

  7. 工作了3年的JAVA程序员应该具备什么技能?(zhuan)

    http://www.500d.me/article/5441.html **************************************** 来源:五百丁 作者:LZ2016-03-18 ...

  8. 优秀Java程序员必须了解的GC工作原理(转)

    一个优秀的Java程序员必须了解GC(Garbage Collection 垃圾收集)的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系 ...

  9. java程序的工作原理

    Sun公司设计java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机(包括PC机和工作站)上运行.为了实现这一目标,Sun公司提供了一阵Java虚拟机(Java Virtual Mac ...

随机推荐

  1. 2月4日 体温APP开发记录

    1.阅读构建之法 现代软件工程(第三版) 2.观看Android开发视频教程最新版 Android Studio开发 3.数据库链接,,数据传输功能测试

  2. VS IDE之xml过大报错

    语料处理时遇到这个错误 在命令行中输入 $vsWherePath = Join-Path ${env:ProgramFiles(x86)} "Microsoft Visual Studio\ ...

  3. zookeeper,kafka,redis等分布式框架的主从同步策略

    1 zookeeper选主机制 1.1 LeaderElection选举算法 选举线程由当前Server发起选举的线程担任,他主要的功能对投票结果进行统计,并选出推荐的Server.选举线程首先向所有 ...

  4. java类的反射机制

    1.获得一个类的类对象有哪些方式? - 方法1:类型.class,例如:String.class- 方法2:对象.getClass(),例如:"hello".getClass()- ...

  5. golang中map原理剖析

    1. golang中的map有自己的一套实现原理,其核心是由hmap和bmap两个结构体实现的 2.  初始化map package main func main() { // 初始化一个可容纳10个 ...

  6. python3 .format()函数

    Python 3.5.2实验 >>> print('{0},{1}'.format('kzc',18) ) kzc,18 >>> print('{},{}'.for ...

  7. 『无为则无心』Python函数 — 38、Python中的异常

    目录 1.异常概念 2.了解异常 3.异常的写法 (1)语法 (2)快速体验 (3)捕获指定异常 (4)异常中的else (5)异常中的finally (6)总结 1.异常概念 定义:程序在运行过程当 ...

  8. Flink 如何通过2PC实现Exactly-once语义 (源码分析)

    Flink通过全局快照能保证内部处理的Exactly-once语义 但是端到端的Exactly-once还需要下游数据源配合,常见的通过幂等或者二阶段提交这两种方式保证 这里就来分析一下Sink二阶段 ...

  9. 从容器中获取宿主机IP地址

    背景: docker 中的程序需要连接外部的程序,连接的过程中会告知外部程序自己的ip地址,然后外部的程序会回连docker中的程序.由于docker使用的是rancher中的托管模式,外部程序是没办 ...

  10. react react-smooth动画

    首先自然而然的安装一下依赖: npm install react-smooth --save-dev 接下来就是组件代码啦: import React, { Component, Fragment } ...