Tôi có một loạt các tệp ZIP cần tuyệt đối để sắp xếp lại và trích xuất một số phân cấp. Những gì tôi có thể làm, hiện tại, là tạo cấu trúc thư mục và di chuyển các tệp zip đến vị trí thích hợp. Các pho mát thần bí mà tôi đang thiếu là một phần mà trích xuất các tập tin từ kho lưu trữ ZIP.Giải nén tập tin từ kho lưu trữ Zip bằng lập trình bằng C# và System.IO.Packaging
Tôi đã xem các bài viết MSDN trên lớp ZipArchive
và hiểu chúng một cách hợp lý. Tôi cũng đã xem số VBScript ways to extract. Đây không phải là một lớp phức tạp nên việc trích xuất nội dung nên khá đơn giản. Trong thực tế, nó hoạt động "chủ yếu". Tôi đã bao gồm mã hiện tại của mình bên dưới để tham khảo.
using (ZipPackage package = (ZipPackage)Package.Open(@"..\..\test.zip", FileMode.Open, FileAccess.Read))
{
PackagePartCollection packageParts = package.GetParts();
foreach (PackageRelationship relation in packageParts)
{
//Do Stuff but never gets here since packageParts is empty.
}
}
Vấn đề có vẻ là ở đâu đó trong GetParts
(hoặc Nhận Bất cứ điều gì cho rằng vấn đề). Dường như gói, trong khi mở, trống. Đào sâu hơn trình gỡ lỗi cho thấy rằng thành viên private _zipArchive cho thấy rằng nó thực sự có các phần. Các bộ phận có tên đúng và mọi thứ. Tại sao chức năng GetParts
không truy xuất được? Tôi đã cố gắng đúc mở cho một ZipArchive và điều đó đã không giúp đỡ. Grrr.
FYI, tôi đã đăng một yêu cầu trên MS Connect để thêm hỗ trợ cho kho lưu trữ ZIP chung. Bạn cũng có thể bỏ phiếu tại https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=477393 –