2012-11-17 5 views
1

다음 코드를 사용하여 FtpWebRequest의 출력을 가져온 다음 하나씩 차례로 구문 분석합니다. 그 FTP 디렉토리에 아무것도 없기 때문에문자열을 완전히 자르십시오.

FTPEntity entity = new FTPEntity(entityName); 
entities.Add(entity); 
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(textBoxFTPSite.Text + entityName); 
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
request.Credentials = new NetworkCredential(textBoxFTPUserName.Text, textBoxFTPPassword.Text); 
FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
Stream responseStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(responseStream); 
string[] outputlines = reader.ReadToEnd().Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
foreach (string info in outputlines) { 
    if (info == "") { 
    worker.ReportProgress(1); 
    continue; 
    } 
    var tokens = info.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 
} 

ReadToEnd()의 출력은 비어 있습니다. 그러나 여전히 Split 함수는 하나의 빈 요소 배열을 생성하며 그 중 하나를 필터링하기 위해 if 문을 사용해야했습니다.

Trim()이 완전히 트리밍되지 않습니까?

답변

1

ReadToEnd() 호출의 출력이 빈 문자열 (공백이 아닌)이 아니라고 가정하면 Trim() 메서드는 완벽하게 작업합니다. 즉, 아무 것도 없다는 사실에도 불구하고 모든 공백을 제거합니다. .

String.Split() 메서드는 요소가 빈 문자열이더라도 적어도 하나 이상의 요소 배열을 항상 반환합니다. 문자열에는 텍스트가없고 비어 있으므로 한 개의 빈 문자열 배열이 나타납니다.

관련 문제