다음주에 작은아버지께 드릴 프로그램을 위해서 만들어 본 클래스이다.
백업 프로그램인데, 모든 파일을 경로와 파일명 그대로 다른 드라이브로 옮겨 주기 위해서 만들어 클래스들
그런데 이거 참 클래스 이름 짓기가 참 난감했다. 이걸 뭐라고 해줘야 하나..
그래서 그냥 어울리지는 않지만 FileSystem이라고 이름지엇다.
class FileSystem
{
/*CopyAll : 특정 디렉토리의 모든 폴더와 파일을 다른 드라이브로 옮기는 메서드
* args : 원본의 경로
* drive : 옮길 드라이브
*/
public void CopyAll(string args,string drive)
{
DirectoryInfo dinfo = new DirectoryInfo(args);
string dest;
if (dinfo.Exists)
{
DirectoryInfo[] dir = dinfo.GetDirectories();
foreach (DirectoryInfo d in dir)
{
CopyAll(d.FullName,drive);
}
FileInfo []fs = dinfo.GetFiles();
foreach (FileInfo f in fs)
{
dest = f.Directory.FullName;
dest = dest.Remove(0, 1);
dest = dest.Insert(0, drive);
Console.WriteLine("Copy " + f.Name + " to " + dest);
FileCopy(f.FullName, dest, 0);
}
}
}
/* MakeDir : 디렉토리를 만드는 메서드
* dir : 만들 디렉토리의 경로
*/
public void MakeDir(string dir)
{
DirectoryInfo dinfo = new DirectoryInfo(dir);
if (dinfo.Exists == false)
{
dinfo.Create();
}
}
/* FileCopy : 파일을 복사하는 함수
* src : 복사할 파일의 경로 및 파일 이름
* dest : 복사할 목적지
* mode : 파일을 복사할것인지, 이동할것인지 설정
*/
public void FileCopy(string src,string dest,int mode)
{
FileInfo finfo = new FileInfo(src);
FileInfo fsrc;
if (finfo.Exists == true)
{
MakeDir(dest);
dest = dest + "\\" + finfo.Name;
switch (mode)
{
case 0:
fsrc = finfo.CopyTo(dest, true);
break;
case 1:
finfo.MoveTo(dest);
break;
}
}
}
}