2011-06-01 140 views
1

使用java,我想复制整个目录,但不包括某些子目录(以及这些子目录内的所有文件)向下文件路径。我怎样才能做到这一点?我看到过几个这样的问题,但使用Perl/ANT等,但不使用Java。Java:如何复制目录但排除主目录内部的某些目录

+0

“.. but using Perl/ANT etc but not Java。” Ant任务主要是用Java编写的。 – 2011-06-01 17:27:09

+0

@Andrew Thompson:我只是想问这个。是否可以从Java调用ANT脚本?在这一行上谷歌已经抛出了一些链接。穿过他们。 – understack 2011-06-01 17:30:17

回答

2

尝试从Apache Commons IO获得FileUtils.html#copyDirectory。其中一个重载版本采取FileFilter实例与单一直接的方法由您来实现:

boolean accept(File pathname) 

也期待在下议院IO现有的便利FileFilterimplementations名单:

  • AgeFileFilter
  • AndFileFilter
  • CanReadFileFilter
  • CanWriteFileFilter
  • DelegateFileFilter
  • DirectoryFileFilter
  • EmptyFileFilter
  • FileFileFilter
  • HiddenFileFilter
  • MagicNumberFileFilter
  • NameFileFilter
  • NotFileFilter
  • OrFileFilter
  • PrefixFileFilter
  • RegexFileFilter
  • SizeFileFilter
  • SuffixFileFilter
  • WildcardFileFilter
  • WildcardFilter
+0

FileFilter重载是完美的。 – understack 2011-06-02 19:17:51

1

你可以做到这一点,你会以同样的方式在任何其他语言

  1. 开始在根源目录
  2. 查看全部孩子(例如,使用广度优先搜索)
  3. 如果您想忽略孩子,请忽略它 如果孩子是目录,请使用该孩子的File.mkdir() 如果孩子是一个文件,将其复制 使用一个FileInputStream 编写使用一个FileOutputStream
  4. 重复,每个子目录

或者你阅读到一个新文件中的数据打开该文件,你可以这样做简单的方法
1. Apache FileUtils
2. Java File Copy Library项目