특정 파일을 다른 디렉터리에 이동하거나 복사해야 하는 경우 두 가지 방법이 있다.
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의 경로 또한 변경된다.
설명 끝!
'프로그래밍 언어 > C#' 카테고리의 다른 글
[C#] 이미지 투명화(배경제거) - #1 (0) | 2021.04.13 |
---|---|
[C#] OpenFileDialog를 이용하여 파일 불러오기 (0) | 2021.04.13 |
[C#] 바로가기 생성 방법 (0) | 2020.07.30 |
[C#] Eval 사용법 (0) | 2020.04.14 |
[C#] Tab / Shift + Tab 코딩 (2) | 2019.06.25 |
댓글