본문 바로가기

.net

ASP.NET 디렉토리(directory) 복사


ASP.NET에서는 디렉토리 복사가 지원하지 않는다.

왠지 있을 것 같았던.. 디렉토리 복사는 없었다..

Move, Create만 존재할 뿐... 이런거도 하나만들어주지말야...

아무튼 이번에 필요해서 하나 만들어보았음...

폴더형태는 아래와 같다.

사용자 삽입 이미지

현 위치는 로컬 D드라이버이며 AJAX라는 폴더 내에
왼쪽 이미지와 같이 많은 폴더가 존재하며 폴더내에는
파일도 있다.










그럼 위 폴더를 복사하는 소스는 아래와 같다.

주의할 점은 해당폴더내의 폴더목록을 다 가져오기 위해서는 재귀호출 메소드가 존재한다는
거다... 별건 아니고.. @.@;

우선 폴더목록 가져오는 메소드 부터...

public void GetDirectory(DirectoryInfo dir)
{
    try
    {
        Directory.CreateDirectory(dir.FullName.ToString().Replace("AJAX", "AJAX2"));
        //root폴더내 파일 부터 복사(요놈을 안해주면 root폴더내 파일은 복사가 안된다.)
        FileInfo[] files_ = dir.GetFiles();
        foreach(FileInfo subFile_ in files_)
        {
             File.Copy(subFile_.FullName, subFile_.FullName.Replace("AJAX", "AJAX2"), true);
        }
        DirectoryInfo[] directories = dir.GetDirectories();
        foreach(DirectoryInfo subdir in directories)
        {
             //디렉토리를 만들기, Replace는 AJAX2로 복사하기 위하여... 대충 이렇게^^;
             Directory.CreateDirectory(subdir.FullName.ToString().Replace("AJAX", "AJAX2"));

             //해당폴더내의 파일목록을 가져오자
             FileInfo[] files = subdir.GetFiles();
             foreach(FileInfo subFile in files)
             {
                 //해당파일 카피
                 File.Copy(subFile.FullName, subFile.FullName.Replace("AJAX", "AJAX2"), true);
             }
            //재귀호출하기 위한 함수 중요!! 폴더내의 폴더들을 쥐잡듯이 잡기 위해서~^^;
             GetDirectory(subdir);
         }
   }
   catch
   {
   }
}

이제 위 메소드를 쓰는 방법은... 아래와 같이 간단합니다.

DirectoryInfo dir = new DirectoryInfo(@"D:\AJAX");
if(dir.Exists)
{
    GetDirectory(dir);
}

요렇게 하면 폴더 copy는 해결!! 실력이 미천하여... 소스가 지저분하다는...

'.net' 카테고리의 다른 글

Image Resizing  (0) 2008.12.23
Xml 수정하기(update)  (0) 2008.07.08
Xml네임스페이스 "http://tempuri.org/"  (0) 2008.05.19