2011-06-01 109 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項目