0
File content[] = new File("C:/FilesToGo/").listFiles();

for (int i = 0; i < content.length; i++){                       

    String destiny = "C:/Kingdoms/"+content[i].getName();           
    File desc = new File(destiny);      
    try {
        Files.copy(content[i].toPath(), desc.toPath(), StandardCopyOption.REPLACE_EXISTING);
    } catch (IOException e) {
        e.printStackTrace();
    }                   
}   

这就是我所拥有的。它复制一切都很好。但在内容中有一些文件夹。文件夹会被复制,但文件夹的内容不会。

4

3 回答 3

3

建议在 Apache Commons IO 中使用FileUtils :

FileUtils.copyDirectory(new File("C:/FilesToGo/"),
                        new File("C:/Kingdoms/"));

复制目录和内容。

于 2012-08-11T22:12:38.270 回答
0

递归。这是一种使用递归删除文件夹系统的方法:

public void move(File file, File targetFile) {
    if(file.isDirectory() && file.listFiles() != null) {
        for(File file2 : file.listFiles()) {
            move(file2, new File(targetFile.getPath() + "\\" + file.getName());
        }
    }
    try {
         Files.copy(file, targetFile.getPath() + "\\" + file.getName(),  StandardCopyOption.REPLACE_EXISTING);
    } catch (IOException e) {
        e.printStackTrace();
    } 
}

没有测试代码,但它应该可以工作。基本上,它深入到文件夹中,告诉它移动项目,如果它是一个文件夹,则遍历它的所有子项,然后移动它们,等等。

于 2012-08-11T22:08:31.893 回答
0

只是为了澄清 Alex Coleman 的回答中需要更改的内容,以使代码正常工作。这是我测试的亚历克斯代码的修改版本,对我来说效果很好:

private void copyDirectoryContents(File source, File destination){
    try {
        String destinationPathString = destination.getPath() + "\\" + source.getName();
        Path destinationPath = Paths.get(destinationPathString);
        Files.copy(source.toPath(), destinationPath, StandardCopyOption.REPLACE_EXISTING);
    }        
    catch (UnsupportedOperationException e) {
        //UnsupportedOperationException
    }
    catch (DirectoryNotEmptyException e) {
        //DirectoryNotEmptyException
    }
    catch (IOException e) {
        //IOException
    }
    catch (SecurityException e) {
        //SecurityException
    }

    if(source.isDirectory() && source.listFiles() != null){
        for(File file : source.listFiles()) {               
            copyDirectoryContents(file, new File(destination.getPath() + "\\" + source.getName()));
        }
    }

}
于 2016-04-01T09:31:00.417 回答