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 |