문제

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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top