Windows FTP 서버의 파일 세부 사항을 구문 분석합니다
-
19-09-2019 - |
문제
C# 코드를 통해 FTP 서버에 연결하려고 노력하고 있으며 파일 및 디렉토리 목록을 얻고 있습니다. 그리고 나는 Arraylist (모든 속성과 함께)를 저장하고 있습니다. SYS FTP 명령을 통해 FTP 서버 유형을 찾을 수 있습니다. 파일 directories 속성을 구문 분석하기 위해 Unix 기반 파일에 대한 정규 표현식이 있습니다. 그러나 Windows FTP 서버 파일에 대한 표현이 없습니다. 나는 그것을 만드는 데 도움이 필요하다 ..
04-30-09 10:40AM <DIR> Acrobat
12-08-09 10:36PM 9058 AuthCheck.zip
12-06-09 12:49PM 174 desktop.ini
11-09-09 03:33PM <DIR> FailedPDF
나는 이것들을 구문 분석해야한다. 날짜, 시간, dir 파일, 파일 이름
도와주세요. 감사.
해결책
나는 C#에 대해 많이 모른다. 그러나 당신이 단지 regex가 필요하다면 이것을 시도해보십시오.
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$
$ 1 = 날짜, $ 2 = 시간, $ 3 = AM 또는 PM, $ 4 = 유형 (null이 될 수 있음), $ 5 = 크기 (dir), $ 6 = 이름
또는 IFF $ 4는 또는 비어 있습니다
^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$
"<"와 ">"가 C#에서 특별한 숯이 아니라고 생각합니다.
다른 팁
^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$
캡처 그룹 : 0 : DateTime 1 : is dir 2 : filesize (또는 directory의 경우 null) 3 : name
컴파일러가 편리하지 않아 테스트 할 수 없지만 시작하기에 충분히 가까워 야합니다.
선에 고정 된 구조가있는 것처럼 보입니다. 그래서 당신은 단순히 이것을 할 수 있습니다 :
Date fileDate;
bool isDir;
int fileSize;
string fileName;
fileDate=line.Substring(0,18).ParseExact("MM-dd-yy hh-sstt");
isDir=line.Substring(24,5)=="DIR";
if (!isDir)
{
fileSize=int.Parse(line.Substring(29,10).Trim());
}
fileName=line.Substring(39);