2012-03-27 81 views
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."); 
    } 
    } 

我很震惊。 谢谢。

+3

看得出来,你的所有文件复制小部分?是的,只是呃...摆脱? – Corbin 2012-03-27 06:44:24

+1

为什么不直接删除写入文件的代码部分并将其替换为dstPath.createNewFile()?你最终会得到一堆空文件,这似乎是你想要的。 – Renato 2012-03-27 06:46:03

+6

当你说你写了一个小程序时,我不相信你。否则,你会注意到你也写了代码来复制这些文件... – Sorin 2012-03-27 06:47:03

回答

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); 
      } 
     } 
    } 
} 
0

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

1)复制目录与子目录和文件 2)1.无论 3A)实例化列出父目录下的文件到的ArrayList 3B )实例化列出新的子文件夹到一个数组列表中 3c。)实例化列出每个子文件夹中的所有文件到他们自己的数组列表中 4.)使用for循环现在删除新目录和子文件夹中的每个文件

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

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."); 
} 

}

相关问题