2011-07-05 36 views
5

Tôi đang sử dụng Ionic.Zip.dll từ thư viện DotNetZip và tôi đang cố gắng xóa tệp ZIP sau khi kết thúc giải nén, nhưng tôi không thể quản lý để làm điều đó.C# Xóa tệp .ZIP sau khi giải nén

Đây là mã Tôi hiện có:

using (ZipFile zip = ZipFile.Read(nextVersion + ".zip")) 
{ 
    zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently); 

    try 
    { 
     File.Delete(nextVersion + ".zip"); 
    } 
    catch (Exception) 
    { 
     MessageBox.Show("Could not delete ZIP!"); 
     Environment.Exit(1); 
    } 
} 

Tôi đang làm gì sai ở đây?

+2

thử xóa các tập tin bên ngoài tuyên bố sử dụng của bạn. Vẫn có thể có khóa trên tệp. – used2could

+0

Tệp ZIP vẫn đang được sử dụng? Bạn có nên đóng tệp trước khi xóa không? – Brad

+0

Im Sử dụng cùng một Dll và tôi cũng đang cố gắng Xóa, Bạn lấy 'Tập tin' ở đâu? – Pomster

Trả lời

6

Bạn đang ngoại lệ vì tệp vẫn mở khi bạn cố xóa. Di chuyển File.Delete đến sau khối using.

+0

Ahh! Tôi thấy bây giờ, cảm ơn bạn! – Alan

3

Thử tính năng này?

try { 
    using (ZipFile zip = ZipFile.Read(nextVersion + ".zip")) 
    { 
     zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently); 
    } 
    File.Delete(nextVersion + ".zip"); 
} 
catch (Exception) { 
    MessageBox.Show("Could not delete ZIP!"); 
    Environment.Exit(1); 
} 
+0

Cảm ơn bạn đời! Thực sự đã giúp :) – Alan

2

Có! Tôi có câu trả lời giống như Richard Schneider. Tệp zip vẫn được truy cập theo chuỗi hiện tại, trước tiên bạn phải đóng tệp.

Hãy thử điều này

using (ZipFile zip = ZipFile.Read(nextVersion + ".zip")) 
      { 
       zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently); 
       zip.Dispose(); 
       try 
       { 
        File.Delete(nextVersion + ".zip"); 
       } 
       catch (Exception) 
       { 
        MessageBox.Show("Could not delete ZIP!"); 
        Environment.Exit(1); 
       } 
      } 
0

Move File.Delete bên ngoài sử dụng dấu ngoặc sử dụng (ZipFile zip = ZipFile.Read (nextVersion + ".zip"))

Các vấn đề liên quan