Java:如何复制一个目录,但排除主目录深处的一些目录

Java:如何复制一个目录,但排除主目录深处的一些目录,java,directory,copy,Java,Directory,Copy,使用java,我想沿着文件路径复制整个目录,不包括一些子目录(以及这些子目录中的所有文件)。我该怎么做?我在SO上见过几个这样的问题,但使用Perl/ANT等,而不使用Java。尝试使用ApacheCommons IO。其中一个重载版本使用您要实现的单一直接方法执行: boolean accept(File pathname) 另请查看Commons IO中现有方便的文件过滤器的列表: AgeFileFilter 和文件过滤器 CanReadFileFilter canwritefilter

使用java,我想沿着文件路径复制整个目录,不包括一些子目录(以及这些子目录中的所有文件)。我该怎么做?我在SO上见过几个这样的问题,但使用Perl/ANT等,而不使用Java。

尝试使用ApacheCommons IO。其中一个重载版本使用您要实现的单一直接方法执行:

boolean accept(File pathname)
另请查看Commons IO中现有方便的
文件过滤器的列表:

  • AgeFileFilter
  • 和文件过滤器
  • CanReadFileFilter
  • canwritefilter
  • 委派文件筛选器
  • 目录文件过滤器
  • 空滤器
  • 文件过滤器
  • 隐藏文件过滤器
  • MagicNumberFileFilter
  • 名称文件过滤器
  • NotFileFilter
  • OrFileFilter
  • 预过滤器
  • RegexFileFilter
  • 尺寸过滤器
  • 后缀文件过滤器
  • 通配符文件过滤器
  • 通配符过滤器

您可以用与其他任何语言相同的方式来完成

  • 从源目录的根目录开始
  • 遍历所有子项(例如使用广度优先搜索)
  • 如果你想忽略这个孩子,就忽略它 如果子目录是目录,则对该子目录使用File.mkdir() 如果子项是文件,请复制它 使用FileInputStream打开文件 使用FileOutputStream将读取的数据写入新文件
  • 对每个子目录重复此操作
  • 或者,您可以用简单的方法来实现这一点
    1.

    2.project

    “。但是使用Perl/ANT等,而不是使用Java。”ANT任务主要是用Java编写的。@Andrew Thompson:我正要问这个问题。可以从Java调用ANT脚本吗?谷歌在这条线上抛出了一些链接。文件过滤器重载是完美的。