C#을 사용하여 변수 형식으로 디렉터리 목록에 대한 FTP 응답 구문 분석
문제 설명:
FTP 위치를 모니터링하는 서비스를 개발할 때 FTP로부터 받은 응답을 구문 분석하는 것이 필요합니다. WebRequestMethods.Ftp.ListDirectoryDetails 메서드를 사용하는 FtpWebRequest. FTP 서버 소프트웨어 전반에 걸쳐 응답 형식이 다양하기 때문에 문제가 발생합니다. 예를 들어, 한 서버는 Windows 스타일 DOS 형식으로 응답을 반환하고 다른 서버는 Linux 스타일 UNIX 형식을 따를 수 있습니다.
사용자 정의 C# 구문 분석 솔루션:
FtpWebRequest 클래스는 기본적으로 이러한 형식 변형을 처리하지 않지만 사용자 지정 C# 솔루션을 만들 수 있습니다. DOS 스타일 형식의 경우 다음 코드를 활용할 수 있습니다.
string pattern = "^(\d+-\d+-\d+\s+\d+:\d+(\w{2}))\s+(<DIR>|\d+)\s+(.*)$"; Regex regex = new Regex(pattern); 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} {1,9} {2}", name, size, modified); }
MLSD 명령을 사용하는 최신 솔루션:
더 나은 접근 방식은 MLSD 명령을 활용하는 것입니다. , 이는 최신 FTP 서버에서 지원됩니다. 이 명령은 디렉터리 목록에 대해 기계가 읽을 수 있는 표준화된 형식을 반환합니다. WinSCP .NET과 같은 특정 타사 라이브러리는 MLSD 명령을 지원하고 일관된 방식으로 구문 분석된 결과를 제공합니다.
RemoteFileInfo[] files = session.EnumerateRemoteFiles(path, null); foreach (RemoteFileInfo file in files) { Console.WriteLine("{0,-16} {1,9} {2}", file.Name, file.Length, file.LastWriteTime); }
결론:
FTP 구문 분석 디렉터리 목록 응답은 다양한 형식을 주의 깊게 처리해야 합니다. 맞춤형 솔루션도 가능하지만 최신 MLSD 명령을 지원하는 라이브러리를 활용하는 것이 더 안정적입니다. 이 접근 방식은 일관된 구문 분석을 지원하고 FTP 응답에서 관련 파일 및 디렉터리 메타데이터를 추출하는 작업을 단순화합니다.
위 내용은 C#에서 다양한 형식의 FTP 디렉터리 목록을 안정적으로 구문 분석하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!