как скопировать структуру каталогов без фактического копирования содержимого в другой каталог - PullRequest
0 голосов
/ 27 марта 2012

Я хочу скопировать структуру каталогов без копирования содержимого / файлов.Я хочу скопировать только структуру папок.Я написал пример программы, но она также копирует содержимое / файлы.

   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 ]

1 голос
/ 20 июня 2012

Это сработало для меня:

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 голосов
/ 27 марта 2012
   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.");
}

}

0 голосов
/ 27 марта 2012

Так что, если я прав, вы просто хотите скопировать папки.

1.) Копировать каталог с подкаталогами и файлами 2.) Поместить 1. везде, где 3a.) Создание списка файлов в родительском каталоге в виде arrayList 3b.) Создание списка новых вложенных папок.в arrayList 3c.) Создание списка всех файлов в каждой подпапке в своих собственных массивах arrayLists 4.) Использование цикла for для удаления всех файлов в новом каталоге и подпапке

Отсюда у вас должна быть копия нового каталога со всеми удаленными файлами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...