C#에서 덮어쓰기가 가능한 파일을 이동하기 위해 복사, 삭제를 이용할 수 있다. 파일 복사는 File.Copy 메서드를 파일 삭제는 File.Delete() 메서드를 사용할 수 있다. File.Move() 메서드를 사용할 수 있지만, 덮어쓰기에 대한 옵션이 없다. MSDN에 따르면 특정 닷넷 버전에는 덮어쓰기 가능한 옵션이 있는데 본인은 잘 안되었다. 파일 이동의 원리는 파일 복사 후 삭제라는 과정과 동일하다.
C# 특정 폴더의 파일 이동 덮어쓰기 메서드 만들기
C# 닷넷으로 파일 이동을 할 때 File.Move 메서드를 사용할 수 있지만, 덮어쓰기에 대한 옵션이 보이지 않거나 또는 사용하지 못할 경우들이 생긴다.
마이크로소프트의 MSDN을 살펴보면 덮어쓰기에 대한 옵션이 있지만, 정작 사용하려면 코드에는 빨간줄이 그어지거나 사용할 수 없는 메서드가 없다는 메시지를 볼 수 있다.
걱정하지 말자.
덮어쓰기가 가능한 파일이동의 원리를 알면 코드는 쉽게 수정할 수 있다.
컴퓨터 시스템에서 파일 이동은 복사와 삭제를 의미한다.
이것을 이용하면 덮어쓰기 가능한 파일 이동을 할 수 있다.
파일 이동의 원리
원리라고 해도 이미 다들 알고 있을 것이다.
파일을 이동한다는 것은 다른 폴더에 내가 원하는 파일을 복사한 후, 이전 위치에 있던 파일을 삭제하는 과정이다.
파일 이동의 원리는 이렇게 간단하다.
그렇다면 C# 에서 파일을 이동시키기 위한 메서드가 무엇인지 알 수 있다.
File.Copy() 메서드와 File.Delete() 메서드를 사용하면 된다.
우선 파일을 원하는 위치에 복사한 후 원본 파일을 삭제하면 되는 것이다.
- File.Copy : 파일을 복사한다.
- File.Delete : 파일을 삭제한다.
코드 작성
방법을 알았으니 이제는 코드를 만들어 보자.
덮어쓰기가 가능한 파일 이동을 위해 원본 파일을 다른 폴더에 복사한 후 원본파일을 삭제하면 된다.
메서드는 File.Copy 와 File.Delete 를 사용하면 된다.
하지만, 이것을 사용하기 위해 원본파일이 어떤 폴더에 있는지 지정해야 하며, 특정폴더의 모든 파일을 목록으로 불러와야 한다.
특정폴더의 파일을 불러오기 위해 foreach 반복문과 Directory.EnumerateFiles 메서드를 사용한다.
코드를 보자.
private void MoveFileInDirectoryCopyDelete(string aSrcDir, string aDestDir)
{
foreach (var file in Directory.EnumerateFiles(aSrcDir))
{
File.Copy(file, Path.Combine(aDestDir, Path.GetFileName(file)), true);
File.Delete(Path.Combine(aSrcDir, Path.GetFileName(file)));
}
}
덮어쓰기가 가능한 파일 이동을 구현하기 위해 File.Copy, File.Delete 메서드를 사용했다.
폴더의 모든 파일을 이동시키기 위해 Directory.EnumerateFiles 메서드를 사용하고 foreach 반복문을 사용하여 파일을 하나씩 처리하도록 하였다.
이것을 편하게 처리하기 위해 하나로 묶고 기능적으로 사용하기 위해 메서드로 만들었다.
코드 설명
위의 코드에 대한 간단한 설명은 다음과 같다.
- Directory.EnumerateFiles( 폴더위치 ) 메서드
폴더위치를 지정하면 해당 폴더의 파일들을 컬렉션 형태로 얻을 수 있다. - foreach 반복문
컬렉션 형태의 파일들을 하나씩 반복하여 처리한다. - File.Copy( 원본파일명, 복사할파일명, 덮어쓰기여부 ) 메서드
폴더 경로가 포함된 파일을 복사한다. 원본파일명을 지정하고 이동할 파일명을 지정한다. 덮어쓰기여부가 Y 라면 기존의 파일에 덮어쓰기가 가능해진다. - File.Delete( 파일경로 ) 메서드
폴더 경로를 포함한 파일을 삭제한다. - Path.Combine( path1, path2 ) 메서드
문자열을 결합하여 폴더경로를 만든다.
'programming > C#' 카테고리의 다른 글
C# 특정 폴더의 파일 목록 불러오기 Directory.EnumerateFiles 메서드 (0) | 2024.05.21 |
---|---|
C# 특정 폴더의 파일 이동 메서드 만들기 (0) | 2024.05.05 |
댓글