>백엔드 개발 >C++ >C#에서 FTP 디렉터리 목록을 효율적으로 구문 분석하는 방법은 무엇입니까?

C#에서 FTP 디렉터리 목록을 효율적으로 구문 분석하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-26 13:48:14968검색

How to Efficiently Parse FTP Directory Listings in C#?

C#에서 WebRequestMethods.Ftp.ListDirectoryDetails FTP 응답 구문 분석

FtpWebRequest.ListDirectoryDetails 메서드를 사용하면 다음의 파일 및 디렉터리에 대한 자세한 정보를 검색할 수 있습니다. FTP 서버. 그러나 다양한 FTP 서버에서 사용되는 다양한 형식으로 인해 이 방법의 응답을 구문 분석하는 것이 어려울 수 있습니다.

다양한 응답 형식에 대한 사용자 지정 구문 분석

응답을 구문 분석하려면 다양한 형식을 처리하는 사용자 지정 C# 클래스를 원활하게 만들 수 있습니다. 예:

string pattern = @"\s+(\d+)(\w+)(\s+|\s*\d+[^ ].+)(.*)";
Regex regex = new Regex(pattern);

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/");
request.Credentials = new NetworkCredential("user", "password");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());

while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);

    if (match.Success)
    {
        string fileName = match.Groups[4].Value.Trim();
        long size = long.Parse(match.Groups[1].Value);
        string lastModified = match.Groups[2].Value + " " + match.Groups[3].Value;
        bool isDirectory = match.Groups[1].Value.StartsWith("d");

        Console.WriteLine("{0}\t{1}\t{2}", fileName, lastModified, size);
    }
}

기계 판독 가능 응답이 포함된 최신 FTP 클라이언트 사용

그러나 MLSD 명령을 지원하는 FTP 클라이언트를 사용하는 것이 좋습니다. 이는 기계가 읽을 수 있는 형식으로 디렉토리 목록을 반환합니다. 사람이 읽을 수 있는 LIST 명령 응답을 구문 분석하는 것은 MLSD를 지원하지 않는 오래된 서버의 최후의 수단이어야 합니다.

WinSCP .NET과 같은 타사 라이브러리는 MLSD 및 사람이 읽을 수 있는 다양한 지원을 통해 FTP 클라이언트 기능을 제공합니다. 목록 형식. 이는 FTP 디렉토리 목록 구문 분석 프로세스를 단순화합니다.

타사 라이브러리 사용의 이점

  • 신뢰할 수 있는 구문 분석: MLSD 구문 분석 응답 및 다양한 LIST 명령 형식이 처리됩니다.
  • 광범위한 세부 정보: 기계가 읽을 수 있는 MLSD 응답은 파일 권한, 그룹, 소유자와 같은 세부 정보를 제공합니다.
  • LIST 명령으로 대체: MLSD가 지원되지 않는 경우 라이브러리는 LIST 명령을 사용하여 응답을 일관된 결과로 변환할 수 있습니다. 형식입니다.

위 내용은 C#에서 FTP 디렉터리 목록을 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.