Có ai đó có thể thực hiện nén trong môi trường .NET để tạo ra các vùng giữa các tệp. Tôi muốn sử dụng chức năng này nếu có thể, có lẽ bằng cách sử dụng chức năng trong msdelta.dll. Tôi cũng muốn được quan tâm đến cách tạo ra các vùng đồng bằng sử dụng các thư viện khác (nguồn mở tốt hơn).Nén Delta trong .NET
Trả lời
Tôi hy vọng điều này không phải là quá nhiều của một plug biết xấu hổ, nhưng tôi đã viết một thư viện bao bọc xung quanh cả PatchAPI và MSDelta cho mục đích riêng của mình.
Thư viện được cấp phép kép theo MS-PL và DBAD-PL và có sẵn trên GitHub.
Tôi đang giải trí khái niệm xuất bản dự án trên NuGet, nhưng hiện tại bạn có thể tải xuống nguồn và cả tạo và áp dụng các vùng đồng bằng.
Tạo một vùng đồng bằng nên tự giải thích:
var compression = new MsDeltaCompression(); /* or PatchApiCompression(); */
compression.CreateDelta(sourcePath, destinationPath, deltaPath);
Và không kém phần tự giải thích (hy vọng) đang áp dụng một vùng đồng bằng:
var compression = new MsDeltaCompression(); /* or PatchApiCompression(); */
compression.ApplyDelta(deltaPath, sourcePath, destinationPath);
Thử nghiệm trên x86, nhưng P/Gọi chữ ký nên có giá trị như nhau cho x64 và ia64.
Nếu bạn đã chưa quyết định về việc liệu bạn đang sử dụng PatchAPI hoặc MSDelta, README.md
của dự án của tôi cố gắng đề nghị (tóm tắt) cái nào bạn nên sử dụng, nhưng nếu không the documentation for Microsoft's Delta Compression đã này để nói về MSDelta vs PatchAPI:
MSDelta ... có thể tạo ra các file nén nhỏ hơn nhiều so với sản xuất bằng các phương pháp khác. Giao hàng với Windows Vista, đây là thế hệ tiếp theo của công nghệ trước đây được phát hành dưới dạng PatchAPI (sẽ tiếp tục được hỗ trợ).
Mỏ nhấn mạnh.
[Gói NuGet] (http: // nuget.org/packages/DeltaCompressionDotNet /). –
Thư viện lớn ta.speot.is. Tôi đã tò mò nếu có khả năng bạn có thể mở rộng trên nó để tạo ra các tập tin chữ ký, theo cách đó nếu tôi đang làm việc trên mạng, tôi không phải chuyển toàn bộ tập tin qua mạng để lấy delta, và thay vào đó chỉ cần chuyển delta. – ymerej
@Jeremy Cảm ơn. Bạn đang hỏi về một số loại máy chủ vá lỗi đồng bằng, nơi bạn gửi nó một băm của phiên bản hiện tại của tập tin của bạn và nó sẽ gửi cho bạn trở lại một bản vá để mang lại cho nó up-to-date với cái mới nhất? –
Fossil SCM có một thuật toán nén đồng bằng thực hiện trong C, và tôi đã thực hiện một cổng của nó trên C# ở đây: https://github.com/endel/FossilDelta
Để tạo vùng đồng bằng, bạn phải cung cấp một byte[]
về nguồn gốc và mục tiêu. Nó được trả lại là byte[]
, bạn có thể áp dụng sau này.
byte[] origin = System.IO.File.ReadAllBytes ("old-file");
byte[] target = System.IO.File.ReadAllBytes ("new-file");
byte[] delta = Fossil.Delta.Create(origin, target);
Có đồng bằng, bạn có thể áp dụng những thay đổi trong file gốc như thế này:
byte[] applied = Fossil.Delta.Apply(origin, delta);
Tôi nghĩ rằng nó đáng nói đến là tác giả của thuật toán này là tác giả cùng của SQLite - vì vậy nó có một số tín nhiệm.
- 1. Truy vấn nhập Delta delta DataRportHandler
- 2. Lớp nén .NET tốt nhất?
- 3. Đề xuất cho thư viện nén .NET
- 4. Nén một thư mục bằng cách sử dụng nén NTFS trong .NET
- 5. Làm cách nào để nén thư mục bằng .NET?
- 6. Nén và giải nén thư mục trong C#
- 7. Thuật toán khác biệt nhị phân git (lưu trữ delta) có được chuẩn hóa không?
- 8. Giá trị delta của bánh xe chuột luôn 120
- 9. Nén GZip trong WCF WebService
- 10. Tortoise SVN - Lỗi: Nguồn Delta kết thúc bất ngờ
- 11. JavaScript đồng bộ hai mảng (của đối tượng)/tìm delta
- 12. Nén IIS
- 13. git svn: Nguồn Delta kết thúc bất ngờ
- 14. Làm thế nào để thêm delta vào python datetime.time?
- 15. Nén tệp nén zip
- 16. Cách nén nhiều tệp chỉ sử dụng .net api trong C#
- 17. file Nén trong python
- 18. chữ nén trong PostgreSQL
- 19. nén và giải nén suối
- 20. Sự cố nén với tệp JQuery trong Bộ nén YUI
- 21. Nén/giải nén LZW trong điều kiện bộ nhớ thấp
- 22. nén và giải nén dữ liệu chuỗi trong java
- 23. Làm cách nào để giải nén/giải nén trong Emacs
- 24. Cập nhật một tệp trong một tệp nén được nén
- 25. JavaScript: Giải nén/thổi phồng/giải nén/giải nén chuỗi
- 26. Tôi có thể lấy delta của hai IEnumerables trong LINQ không?
- 27. Cách nén và giải nén tệp?
- 28. Cài đặt mức nén nén IIS7
- 29. Tạo thư mục nén (hoặc nén)
- 30. Nén hình ảnh trong android
[xdelta] (http://xdelta.org/) là mã nguồn mở mà tôi thấy được sử dụng nhiều nhất. Tuy nhiên, bạn không chắc chắn về cách gọi C#. – Rup
Cảm ơn. Tôi đã kiểm tra liên kết của bạn và tìm thấy một liên kết khác (http://www.pobox.com/~skeet/csharp/miscutil) có phiên bản bộ giải mã C#. Tuy nhiên, tôi cũng sẽ cần một bộ mã hóa. – dubs