读取目录并创建相同的结构

时间:2015-09-04 13:37:08

标签: java

我想读取一个目录,并在另一个目录中创建相同的文件和子目录。

目录的路径将是用户定义的值。

private static void readFiles(File sourceFolder, String destePath) {
        if (sourceFolder.isDirectory())
            for (File sourceFile : sourceFolder.listFiles()) {
                if (sourceFile.isFile()) {
                    File destFile = new File(destePath + "/"
                            + sourceFile.getName());
                    updateConnectorXML(sourceFile, destFile);
                } else {
                    {
                        destePath = destePath + "/" + sourceFile.getName();
                        File destFile = new File(destePath);
                        destFile.mkdir();
                        readFiles(sourceFile, destePath);
                    }
                }

            }
    }

这里e.d sourceFile将是“c:/ abc”,这是一个目录,我正在读取sourceFile的文件和子目录。现在在updateConnectorXML(sourceFile, destFile)我只是更新XML文件。

现在我想在另一个包含更新XML文件的文件夹中创建相同的目录结构。

在上面的代码中,destePath只更改为一个目录,所有文件都进入目录。我该如何从该目录返回?

1 个答案:

答案 0 :(得分:0)

一个基本错误是重用参数destePath来保存各种子目录路径。比较:

private static void readFiles(File sourceFolder, String destePath) {
    if (sourceFolder.isDirectory()){
        for (File sourceFile : sourceFolder.listFiles()) {
            if (sourceFile.isFile()) {
                File destFile = new File(destePath + "/"
                        + sourceFile.getName());
                updateConnectorXML(sourceFile, destFile);
            } else {
                String subPath = destePath + "/" + sourceFile.getName();
                File destDir = new File(subPath);
                destDir.mkdir();
                readFiles(sourceFile, subPath);
            }
        }
    }
}