public void DecoderStillWorksWhenReadingSlowFile(string original, bool high, int block) { original = Tools.FindFile($".corpus/{original}"); var encoded = Path.GetTempFileName(); var decoded = Path.GetTempFileName(); try { TestedLZ4.Encode(original, encoded, high, block, Mem.K64); using (var source = LZ4Legacy.Decode(Tools.Slow(File.OpenRead(encoded)))) using (var target = File.Create(decoded)) { var buffer = new byte[Mem.K64]; while (true) { var read = source.Read(buffer, 0, buffer.Length); if (read == 0) { break; } target.Write(buffer, 0, read); } } Tools.SameFiles(original, decoded); } finally { File.Delete(encoded); File.Delete(decoded); } }
public byte[] Unwrap(byte[] buffer, int head, int tail, bool reference) { var length = buffer.Length; var input = new byte[length + head + tail]; for (var i = 0; i < input.Length; i++) { input[i] = 0xCD; } Buffer.BlockCopy(buffer, 0, input, head, length); return(reference ? ReferenceLZ4.Unwrap(input, head) : LZ4Legacy.Unwrap(input, head)); }
public static void Decode(string encoded, string decoded, int chunkSize) { using (var source = LZ4Legacy.Decode(File.OpenRead(encoded))) using (var target = File.Create(decoded)) { var buffer = new byte[chunkSize]; while (true) { var read = source.Read(buffer, 0, buffer.Length); if (read == 0) { break; } target.Write(buffer, 0, read); } } }
public static void Encode( string original, string encoded, bool high, int block, int chunk) { using (var input = File.OpenRead(original)) using (var encode = LZ4Legacy.Encode(File.Create(encoded), high, block)) { var buffer = new byte[chunk]; while (true) { var read = input.Read(buffer, 0, buffer.Length); if (read == 0) { break; } encode.Write(buffer, 0, read); } } }