2011-11-03 4 views
5

Tôi cần sử dụng 7zip trong C#. Nếu không có giao diện điều khiển, chỉ cần với 7zSharp.dll? + I tìm thấy một số dữ liệu ở đâygiải nén 7zip trong C# mã

http://7zsharp.codeplex.com/releases/view/10305,

nhưng tôi không biết làm thế nào để sử dụng nó (- Tôi có thể tạo ra .bat (.cmd) tập tin, nhưng tôi cần tập tin dll Xuyên) Chính xác: Tôi cần trích xuất tệp .7z có khóa)

+0

anh đã thử [DotNetZip] (http://dotnetzip.codeplex.com/)? – Oliver

+1

Điều đó có hỗ trợ 7z không? – CodesInChaos

+0

http://dotnetzip.codeplex.com/workitem/14034 –

Trả lời

0

Có vẻ như thư viện này không hỗ trợ tệp được mã hóa. Không có phương thức nào lấy khóa làm tham số.

+0

... và cách tôi có thể trích xuất tệp .7z bằng khóa? –

+0

không phải với lib này ... Bạn chỉ có thể sử dụng System.Diagnostics để bắt đầu một quá trình giao diện điều khiển, nhưng nhìn thấy như bạn không muốn làm điều đó ... Bắt đầu đọc SDK :) –

0

Thư viện 7zSharp dường như không hỗ trợ mật khẩu làm đầu vào, chỉ cần một tệp zip.

Thư viện chỉ cần gọi .exe của 7zip, vì vậy bạn có thể không tải nguồn và thay đổi nó để chấp nhận thông số mật khẩu mà sau đó bạn chuyển đến tệp thực thi.

+1

Vâng đó là tuyệt vời, tôi chỉ giải thích làm thế nào bạn có thể làm điều đó. Tôi sẽ không viết mã cho bạn. – CodeCaster

+0

Tôi không cần mã của bạn! Tôi có thể làm điều đó! Cảm ơn sự giúp đỡ! –

3

Các tác giả của 7zip cung cấp LZMA SDK và tài liệu tốt để có thể đạt được những gì bạn muốn. SDK bao gồm mã C# có khả năng nén/giải nén.

Một lựa chọn khác là sử dụng một cái gì đó như C# (.NET) Interface for 7-Zip Archive DLLs

UPDATE: Một người dùng khác hỏi một câu hỏi tương tự ở đây: How do I create 7-Zip archives with .NET? Câu trả lời có nhiều trong các liên kết cùng tôi cung cấp và một vài chi tiết.

5

Tải xuống standalone console version from 7zip.com và thêm nó vào dự án của bạn.

Bạn cần những 3 tập tin được thêm vào trong dự án:

  1. 7za.exe
  2. 7za.dll
  3. 7zxa.dll

Đừng quên nói Copy to Output Thư mục trong sở thích của nó.

Trích xuất một kho lưu trữ:

public void ExtractFile(string sourceArchive, string destination) 
    { 
     string zPath = "7za.exe"; //add to proj and set CopyToOuputDir 
     try 
     { 
      ProcessStartInfo pro = new ProcessStartInfo(); 
      pro.WindowStyle = ProcessWindowStyle.Hidden; 
      pro.FileName = zPath; 
      pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination); 
      Process x = Process.Start(pro); 
      x.WaitForExit(); 
     } 
     catch (System.Exception Ex) { 
      //handle error 
     } 
    } 

Tạo một kho lưu trữ:

public void CreateZip(string sourceName, string targetArchive) 
{ 
    ProcessStartInfo p = new ProcessStartInfo(); 
    p.FileName = "7za.exe"; 
    p.Arguments = string.Format("a -tgzip \"{0}\" \"{1}\" -mx=9", targetArchive, sourceName); 
    p.WindowStyle = ProcessWindowStyle.Hidden; 
    Process x = Process.Start(p); 
    x.WaitForExit(); 
}