>백엔드 개발 >C++ >다양한 목록 형식에 대해 C#에서 FTP 응답을 효율적으로 구문 분석하려면 어떻게 해야 합니까?

다양한 목록 형식에 대해 C#에서 FTP 응답을 효율적으로 구문 분석하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-26 16:18:09202검색

How Can I Efficiently Parse FTP Responses in C# for Different Listing Formats?

유연한 C# 클래스로 FTP 응답 구문 분석

FTP 연결 관리는 특히 다양한 응답 형식을 처리할 때 복잡한 작업이 될 수 있습니다. 이 문제를 해결하기 위해 FtpWebRequest의 ListDirectoryDetails 메서드를 사용할 수 있지만 여전히 응답의 변형을 구문 분석하고 처리해야 할 수 있습니다.

DOS/Windows 스타일 목록 구문 분석

DOS/Windows 형식 목록의 경우 다음을 활용할 수 있습니다. 코드:

string pattern = @"\^(\d+-\d+-\d+\s+\d+:\d+(?:AM|PM))\s+(<DIR>|\d+)\s+(.+)$";
Regex regex = new Regex(pattern);
IFormatProvider culture = CultureInfo.GetCultureInfo("en-us");
while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
    Match match = regex.Match(line);
    string s = match.Groups[1].Value;
    DateTime modified =
        DateTime.ParseExact(s, "MM-dd-yy  hh:mmtt", culture, DateTimeStyles.None);
    s = match.Groups[2].Value;
    long size = (s != "<DIR>") ? long.Parse(s) : 0;
    string name = match.Groups[3].Value;

    Console.WriteLine(
        "{0,-16} size = {1,9}  modified = {2}",
        name, size, modified.ToString("yyyy-MM-dd HH:mm"));
}

이 정규식 패턴은 DOS/Windows 스타일의 타임스탬프, 파일/디렉터리 크기 및 이름과 일치합니다.

UNIX 스타일 목록

UNIX 스타일 목록의 경우 FTP용 MLSD 처리에 대한 응답을 참조하는 것이 좋습니다. 디렉터리.

대체 옵션: 최신 MLSD 명령

이상적으로는 MLSD 명령을 활용하여 구조화된 형식으로 디렉터리 목록을 얻을 수 있습니다. 이는 사람이 읽을 수 있는 LIST 형식을 구문 분석하는 것보다 선호됩니다. MLSD는 WinSCP와 같은 많은 타사 라이브러리 및 도구에서 지원됩니다.

결론

FTP 응답 구문 분석은 복잡할 수 있지만 올바른 도구와 기술을 사용하면 다양한 목록 형식을 안정적으로 처리할 수 있습니다. MLSD와 LIST를 모두 지원하는 WinSCP와 같은 포괄적인 도구를 사용하면 FTP 관리 요구 사항에 맞는 더욱 강력하고 확장 가능한 솔루션을 제공할 수 있습니다.

위 내용은 다양한 목록 형식에 대해 C#에서 FTP 응답을 효율적으로 구문 분석하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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