[C# 문법] C# 로컬 파일 다루기

목적

  • 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

이 글을 공유하기

댓글

Designed by JB FACTORY