2017-10-03 4 views
-1

zip 내의 파일을 읽으려고하면 해당 파일에 특정 문자열이 있는지 확인하려고합니다. 하지만 그것을 검색하기 위해 "파일"(메모리 스트림)을 문자열로 가져올 수 있습니다.DotNetZip 메모리 스트림을 문자열로 변환

다음 코드를 사용하면 "stringOfStream"이 항상 공백으로 표시됩니다. 무엇을 잘못하고 있습니까? 판독기에는 항상 길이가 있고 읽기 바이트는 다른 수를 반환합니다.

 using (ZipFile zip = ZipFile.Read(currentFile.FullName)) 
     { 
      ZipEntry e = zip[this.searchFile.Text]; 

      using (MemoryStream reader = new MemoryStream()) 
      { 
       e.Extract(reader); 
       var stringReader = new StreamReader(reader); 
       var stringOfStream = stringReader.ReadToEnd(); 
      } 

     } 

감사

+2

'ReadToEnd'를 호출하기 전에 스트림의 위치를 ​​0으로 설정하려고합니다. –

+0

나는 Florent B.가 여기에 대한 답을 기반으로 정확하다고 믿는다 : https://stackoverflow.com/questions/13887538/how-to-use-dotnetzip-to-extract-xml-file-from-zip –

답변

1

는 파일의 끝으로 이동 스트림의 위치를 ​​추출 호출 할 때 나는 생각한다, 그래서 당신은 데이터를 얻기 위해 다시 위치를 변경해야합니다. 작동 여부를 경우

using (ZipFile zip = ZipFile.Read(currentFile.FullName)) 
{ 
      ZipEntry e = zip[this.searchFile.Text]; 

      using (MemoryStream reader = new MemoryStream()) 
      { 
       e.Extract(reader); 
       reader.Position = 0; 
       var stringReader = new StreamReader(reader); 
       var stringOfStream = stringReader.ReadToEnd(); 
      } 

    } 

확인 :

당신이 제발을 시도 할 수 있습니다.

+1

때때로 해결책은 다음과 같다. 너무 필사적으로 간단! 감사!! – chrispepper1989

+0

ZipFile.Read (currentFile.FullName)가 파일을 잠그는 지 아는 사람이 있습니까? 또는 아직도 쓰여질 수 있습니까? – chrispepper1989