LZ4 Frame compress & decompress for .NET based on lz4net.
This lib is a simple, pure managed implementation. You should choose K4os.Compression.LZ4 for a more reliable implementation with dictionary support.
PM > Install-Package LZ4.Frame
lz4net is great, but lacking LZ4 Frame support. This project is based on lz4net and enables LZ4 Frame support. (use K4os.Compression.LZ4 instead)
lz4.net is a C++/CLI wrapper for native LZ4. I love C++/CLI solutions but that means it only works on Windows platforms. This project is fully managed, therefore it's easier to compile, modify, and go cross-platform.
These features are not implemented:
- Linked Block (when Block Independence flag = 0)
- Dictionary (when Dictionary ID != 0)
- Skippable Frame
- Legacy frame
If you get Unhandled ArgumentException: LZ4 block is corrupted, or invalid length has been given.
, your lz4 file is most likely using Linked Block and Dictionary. I currently couldn't find a workaround (please switch to lz4.net) for this because lz4net does not have any Dictionary support.
I'd appreciate it if someone could add Dictionary support for this.
MIT
Rune Henriksen's lz4 frame formatter (LICENSE: MIT) is the main reference of this project.
Thanks @vpenades for helping me improve this lib.
by Ulysses