2011-11-29 39 views
6

Tôi đang sử dụng SharpZipLib trong dự án và tự hỏi liệu có thể sử dụng nó để xem bên trong tệp zip hay không và nếu một trong các tệp trong đó có dữ liệu được sửa đổi trong phạm vi Tôi đang tìm kiếm sau đó để chọn tập tin đó ra và sao chép nó vào một thư mục mới? Có ai biết id điều này là có thể?SharpZipLib Kiểm tra và chọn nội dung của tệp ZIP

+0

Tôi chắc chắn điều đó có thể xảy ra. Bạn sẽ phải mở kho lưu trữ và xem nội dung của tập hợp các tệp. Tùy thuộc vào việc thông tin sửa đổi cuối cùng có được công khai hay không sẽ quyết định liệu bạn có thể làm được mọi thứ khác không. Tôi không lý do nó sẽ không được công khai, thư viện SharpZibLib dựa trên cho phép cho điều đó, vì vậy nó cũng nên cho phép điều đó. Nếu không, luôn có các giải pháp khác cho phép điều đó. –

Trả lời

8

Có, có thể liệt kê các tệp của tệp zip bằng SharpZipLib. Bạn cũng có thể chọn tệp ra khỏi tệp zip và sao chép các tệp đó vào một thư mục trên đĩa của bạn.

Dưới đây là một ví dụ nhỏ:

using (var fs = new FileStream(@"c:\temp\test.zip", FileMode.Open, FileAccess.Read)) 
{ 
    using (var zf = new ZipFile(fs)) 
    { 
    foreach (ZipEntry ze in zf) 
    { 
     if (ze.IsDirectory) 
     continue; 

     Console.Out.WriteLine(ze.Name);    

     using (Stream s = zf.GetInputStream(ze)) 
     { 
     byte[] buf = new byte[4096]; 
     // Analyze file in memory using MemoryStream. 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      StreamUtils.Copy(s, ms, buf); 
     } 
     // Uncomment the following lines to store the file 
     // on disk. 
     /*using (FileStream fs = File.Create(@"c:\temp\uncompress_" + ze.Name)) 
     { 
      StreamUtils.Copy(s, fs, buf); 
     }*/ 
     }    
    } 
    } 
} 

Trong ví dụ trên, chúng tôi sử dụng một MemoryStream để lưu trữ các ZipEntry trong bộ nhớ (để phân tích). Bạn cũng có thể lưu trữ ZipEntry (nếu nó đáp ứng các tiêu chí nhất định) trên đĩa.

Hy vọng điều này sẽ hữu ích.

+0

Đây chính xác là những gì tôi đang tìm kiếm, được đánh giá cao !! – DukeOfMarmalade

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