如代码所示:
public static void main(String[] args) throws Exception { String dir = "E:\project\dir1"; String outDir = "E:\project\dir2"; File input = new File(dir); for(File f : input.listFiles()){ for(File ff : f.listFiles()){ if(ff.getName().contains("test")){ String fileName = ff.getName(); System.out.println(fileName); System.out.println(ff.toPath()); Files.copy(ff.toPath(), Paths.get(outDir + File.separator + fileName)); } } } }
源文件:E:\project\dir1\dir11\test.docx、E:\project\dir1\dir22\test.xlsx
注:目标目录必须存在
若目标目录存在同一文件,可指定调用:
Files.copy(ff.toPath(), Paths.get(outDir + File.separator + fileName), StandardCopyOption.REPLACE_EXISTING);
Files.copy函数源码:
public static Path copy(Path source, Path target, CopyOption... options) throws IOException { FileSystemProvider provider = provider(source); if (provider(target) == provider) { // same provider provider.copy(source, target, options); } else { // different providers CopyMoveHelper.copyToForeignTarget(source, target, options); } return target; }
CopyOption参数可填:
public enum StandardCopyOption implements CopyOption { /** * Replace an existing file if it exists. */ REPLACE_EXISTING, /** * Copy attributes to the new file. */ COPY_ATTRIBUTES, /** * Move the file as an atomic file system operation. */ ATOMIC_MOVE; }