[C# 문법] C# 로컬 파일 다루기
- C#/C# 문법
- 2022. 5. 26. 20:50
목적
- C# 에서는 다양한 방법으로 파일 및 디렉터리 등을 다룰 수 있도록 도와주는 라이브러리 및 오픈소스들이 많습니다.
- 공부 목적으로, 로컬 경로에서 파일 이동, 삭제, 디렉터리 하위 파일 목록 가져오는 3개의 함수를 작성해 보았습니다.
- 해당 코드 작성의 목적은 제 개인적인 연습이고, 테스트가 완벽한 것은 아닌 점 참고하시면 되겠습니다.
IFileManager 인터페이스 구현
- 제일 처음
IFileManager
인터페이스를 다음과 같이 구현하였습니다. - UpLoad, Delete, GetFiles 총 3개의 역할을 하는 메서드를 정의 하였습니다.
- 이제 다음으로
LocalFileManager.cs
하나를 생성 후, IFileManager 인터페이스를 상속받은 후 실제 3개의 메서드 구현을 작성해 보겠습니다.
public interface IFileManager
{
public bool UpLoad(string sourcePath, Transfer transfer);
public bool Delete(Transfer transfer)
public List<string> GetFiles(Transfer transfer)
}
LocalFileManager.cs 구현체 구현
- LocalFileManager.cs 구현체 내용은 다음과 같습니다.
namespace Infrastructure.FTP;
public class LocalFileManager : IFileManager
{
public bool UpLoad(string sourcePath, Transfer transfer)
{
var directory = Path.GetDirectoryName(transfer.TransferPath);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
File.Move(sourcePath, transfer.TransferPath);
return true;
}
public bool Delete(Transfer transfer)
{
var directory = Path.GetDirectoryName(transfer.TransferPath);
if(Directory.Exists(directory))
{
File.Delete(transfer.TransferPath);
return true;
}
return false;
}
public List<string> GetFiles(Transfer transfer)
{
var directory = Path.GetDirectoryName(transfer.TransferPath);
string[]? fileEntries;
if(Directory.Exists(directory))
{
fileEntries = Directory.GetFiles(directory);
List<string> files = new();
foreach (string fileName in fileEntries)
{
string file = fileName;
files.Add(file);
}
return files;
}
return null;
}
}
- 위와 같이 구현체를 작성해 보았습니다.
- 테스트를 해본 것은 아니지만, 큰 문제만 없다면 정상적으로 동작할 거라 생각합니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] 패턴 일치 - null 검사 (0) | 2022.05.26 |
---|---|
[C# 문법] C# 특정 디렉터리 감시하기 (0) | 2022.05.26 |
[C# 문법] Nullable 값 형식 (0) | 2022.05.22 |
[C# 문법] Task 클래스 작업 인스턴스화 (0) | 2022.05.22 |
[C# 문법] 대리자 및 람다 식 (0) | 2022.05.21 |
이 글을 공유하기