如何复制目录结构而不实际将内容复制到另一个目录中

时间:2012-03-27 06:41:01

标签: java directory

我想复制目录结构而不复制内容/文件。我只想复制文件夹结构。 我已经编写了一个示例程序,但它也在复制内容/文件。

   import java.io.*;
   import java.nio.channels.*;

   @SuppressWarnings("unused")
   public class CopyDirectory{
    public static void main(String[] args) throws IOException{
        CopyDirectory cd = new CopyDirectory();
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String source = "C:\\abcd\\Documents\\1";
        File src = new File(source);        
        String destination = "C:\\abcd\\Documents\\2";
        File dst = new File(destination);
        cd.copyDirectory(src, dst);
        }

    public void copyDirectory(File srcPath, File dstPath) throws IOException{
        if (srcPath.isDirectory())
        {
            if (!dstPath.exists())
            {
                dstPath.mkdir();
            }

            String files[] = srcPath.list();
            for(int i = 0; i < files.length; i++)
            {
                System.out.println("\n"+files[i]);
                copyDirectory(new File(srcPath, files[i]), new File(dstPath, files[i]));
            }
        }

        System.out.println("Directory copied.");
    }
   }

我很震惊。 谢谢。

3 个答案:

答案 0 :(得分:1)

这对我有用:

import java.io.File;

public class StartCloneFolderOnly {

    /**
     * @param args
     */
    public static void main(String[] args) {        
        cloneFolder("C:/source",
                "C:/target");       
    }

    public static void cloneFolder(String source, String target) {
        File targetFile = new File(target);
        if (!targetFile.exists()) {
            targetFile.mkdir();
        }
        for (File f : new File(source).listFiles()) {
        if (f.isDirectory()) {
                String append = "/" + f.getName();
                System.out.println("Creating '" + target + append + "': "
                        + new File(target + append).mkdir());
                cloneFolder(source + append, target + append);
            }
        }
    }   
}

答案 1 :(得分:0)

所以如果我是对的,你只想复制文件夹。

1。)复制包含子目录和文件的目录 2。)在任何地方放置 1。 3a。)实例化将父目录中的文件列入arrayList 3b。)实例化以将新子文件夹列入arrayList 3c。)实例化将每个子文件夹中的所有文件列入自己的arrayLists 4。)使用for循环现在删除新目录和子文件夹中的每个文件

从这里,您应该拥有一个新目录的副本,并删除所有文件。

答案 2 :(得分:0)

   import java.io.*;
   import java.nio.channels.*;

   @SuppressWarnings("unused")

    public class CopyDirectory{
    public static void main(String[] args) throws IOException{
    CopyDirectory cd = new CopyDirectory();
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String source = "C:\\abcd\\Documents\\1";
    File src = new File(source);        
    String destination = "C:\\abcd\\Documents\\2";
    File dst = new File(destination);
    cd.copyDirectory(src, dst);
    }

public void copyDirectory(File srcPath, File dstPath) throws IOException{
    if (srcPath.isDirectory())
    {
        if (!dstPath.exists())
        {
            dstPath.mkdir();
        }

        String files[] = srcPath.list();

        for(int i = 0; i < files.length; i++)
        {
            System.out.println("\n"+files[i]);
            copyDirectory(new File(srcPath, files[i]), new File(dstPath, files[i]));
        }
    }

    System.out.println("Directory copied.");
}

}