【问题标题】:Java: how to copy a directory but exclude some directories deep inside main directoryJava:如何复制目录但排除主目录深处的一些目录
【发布时间】:2011-09-06 12:06:00
【问题描述】:

使用 java,我想将不包括某些子目录(以及这些子目录中的所有文件)的整个目录复制到文件路径下。我怎样才能做到这一点?我在 SO 上看到过几个这样的问题,但使用 Perl/ANT 等但不使用 Java。

【问题讨论】:

  • "..但使用 Perl/ANT 等但不使用 Java。" Ant 任务大多是用 Java 编写的。
  • @Andrew Thompson:我正要问这个。是否可以从 Java 调用 ANT 脚本?在这条线上谷歌已经抛出了一些链接。穿过他们。

标签: java directory copy


【解决方案1】:

从 Apache Commons IO 尝试FileUtils.html#copyDirectory。其中一个重载版本采用 FileFilter 实例,由您实现一个简单的方法:

boolean accept(File pathname)

同时查看Commons IO中现有的方便FileFilterimplementations的列表:

  • 年龄文件过滤器
  • AndFileFilter
  • CanReadFileFilter
  • CanWriteFileFilter
  • 委托文件过滤器
  • 目录文件过滤器
  • 空文件过滤器
  • 文件文件过滤器
  • 隐藏文件过滤器
  • MagicNumberFileFilter
  • 名称文件过滤器
  • NotFileFilter
  • 或文件过滤器
  • 前缀文件过滤器
  • 正则表达式文件过滤器
  • 大小文件过滤器
  • 后缀文件过滤器
  • 通配符文件过滤器
  • 通配符过滤器

【讨论】:

  • FileFilter 重载非常完美。
【解决方案2】:

您可以像使用任何其他语言一样进行操作

  1. 从源目录的根目录开始
  2. 遍历所有子节点(例如使用广度优先搜索)
  3. 如果你想忽略孩子,忽略它 如果子目录是目录,请在该子目录上使用 File.mkdir() 如果孩子是一个文件,复制它 使用 FileInputStream 打开文件 使用 FileOutputStream 将您读取的数据写入新文件
  4. 对每个子目录重复

或者,您可以通过简单的方法做到这一点
1.Apache FileUtils
2.Java File Copy Library项目

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 2011-08-01
    • 2013-12-14
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多