본문 바로가기
프로그래밍 언어/C#

[C#] 파일 이동, 복사, 제거 방법

by Jinwood 2020. 7. 30.
반응형

 

특정 파일을 다른 디렉터리에 이동하거나 복사해야 하는 경우 두 가지 방법이 있다.

 

1. System.IO.File에 존재하는 메서드를 사용

2. System.IO.FileInfo에 존재하는 메서드를 사용

 

두가지 방법이 비슷하게 사용할 수 있는데, 나는 2번째 방법으로 코드를 작성해보았다. 아래 코드는 바탕화면에 있는 'Test.txt'파일을 C:\Program Files 폴더로 이동하는 코드이다. 복사 또는 제거를 하고 싶은 경우에는 아래 메서드를 사용하면 된다.

 

파일 이동 : MoveTo()

파일 복사 : CopyTo()

파일 제거 : Delete()

 

파일을 이동/복사/제거 할 때 대상 파일이 이미 있는 경우, 권한이 없는 경우, 파일을 찾을 수 없는 경우, 문자열에 콜론(:)이 포함된 경우 등 여러 가지 예외 요소들이 있다. 해당 예외들이 발생했을 때 에러 메시지가 표시되지 않고 무시하려면 이동/복사/제거 코드를 try - catch 문 내부에 작성하면 된다. 

 

StringBuilder 클래스를 사용하면 경로를 Append 하여 계속 작성하기 편리하다.

Environment 클래스를 사용하면 모든 경로를 직접 입력하지 않아도 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System.IO;
 
static void Main(string[] args)
{
    // 파일 위치 정의
    StringBuilder sb1 = new StringBuilder();
    sb1.Append(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
    sb1.Append(@"\Test.txt");
    string path1 = sb1.ToString();
 
    FileInfo FI = new FileInfo(path1);
    if(FI.Exists)
    {
        try
        {
            // 이동 위치 정의
            var sb2 = new StringBuilder();
            sb2.Append(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
            sb2.Append(@"\Test.txt");
            var path2 = sb2.ToString();
 
           FI.MoveTo(path2); // 이동
        }
        catch
        {
 
        }
    }
}
cs

 

참고로, Environment.SpecialFolder.ProgramFiles 를 사용했을 때 Program Files(x86) 폴더에 파일이 이동할 수 있다. 빌드 대상이 AnyCPU이거나 x86으로 설정되어있기 때문인데, 프로젝트 속성으로 들어가서 플랫폼 대상을 x64로 변경하면 Environment.SpecialFolder.ProgramFiles의 경로 또한 변경된다.

 

 

 

설명 끝!

 

 

 

 

 

 

반응형

댓글