2013-07-04 3 views
0

로 추출 후 나는 .rar 파일을 추출 lib 디렉토리 Nunrarsite을 사용 :삭제 nunrar

RarArchive.WriteToDirectory(fs.Name, Path.Combine(@"D:\DataDownloadCenter", path2), ExtractOptions.Overwrite); 

압축 해제는 잘 작동하지만 난 추출물이 작업은 원래의 압축을 삭제할 수 없습니다 후 파일이 다른 프로세스에 의해 사용되기 때문에

System.IO.File.Delete(path); 

파일 정공 기능 :

try 
      { 
       FileStream fs = File.OpenRead(path); 
       if(path.Contains(".rar")){ 

        try 
        { 
         RarArchive.WriteToDirectory(fs.Name, Path.Combine(@"D:\DataDownloadCenter", path2), ExtractOptions.Overwrite); 
         fs.Close(); 

        } 
        catch { } 

        } 

      catch { return; } 
      finally 
      { 
       if (zf != null) 
       { 
        zf.IsStreamOwner = true; // Makes close also shut the underlying stream 
        zf.Close(); // Ensure we release resources 
       } 
      } 
      try 
      { 
       System.IO.File.Delete(path); 
      } 
      catch { } 

압축 파일을 압축 해제 한 후 삭제할 수 있습니까?

+1

'fs' ('fs.Name'을 (를) 사용하는 곳)의 유형은 무엇입니까? 라이브러리에 익숙하지 않지만 'FileStream'을 열고 닫지 않은 것 같습니다. – keyboardP

+0

그것은'FileStream'이고 삭제 작업 이전에'fs.Close()'를 수행했습니다 –

+0

내 편집 plz를 참조하십시오 –

답변

1

zf이 무엇인지 모르겠지만 using 문에 해당 내용을 감쌀 수도 있습니다. fs.rar를 포함하지 않는 경우에도 path 경우 닫혀이

using(FileStream fs = File.OpenRead(path)) 
{ 
    if(path.Contains(".rar")) 
    { 
     try 
     { 
      RarArchive.WriteToDirectory(fs.Name, Path.Combine(@"D:\DataDownloadCenter", path2), ExtractOptions.Overwrite); 
     } 
     catch { } 
    } 
} 

이 방법으로 FileStream fs 부품을 교체하십시오. 파일 이름 내에 rar이있는 경우에만 fs을 종료합니다.

또한 라이브러리에 스트림 처리 기능이 있습니까? 그것을 닫을 수있는 방법이있을 수 있습니다.

+0

라이브러리에 스트림 처리 기능이 없습니다. 'zf' :'ZipFile zf = null;' –