private async void ExtractFanoWorker(object sender, DoWorkEventArgs e) { long progress = 0; var reader = new BufferedReader(2000000, mInputStreamFanoO); var writer = new BufferedWriter(2000000, mOutputStreamFanoO); var len = mInputStreamFanoO.Length; if (len == 0) { len = 1; } var extractor = new FanoEncoder(reader, writer); extractor.WordLength += (x, y) => len = y / x * 8; extractor.WordsWritten += x => { progress += x; }; Timer t = new Timer(o => mFanoOWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25); await extractor.Decode(); t.Dispose(); await writer.FlushBuffer(); mInputStreamFanoO.Close(); mOutputStreamFanoO.Close(); }
private async void CompressFanoWorker(object sender, DoWorkEventArgs e) { long progress = 0; var reader = new BufferedReader(2000000, mInputStreamFanoI); var writer = new BufferedWriter(2000000, mOutputStreamFanoI); var len = mInputStreamFanoI.Length / mWordLength * 8; if (len == 0) { len = 1; } var compressor = new FanoEncoder(reader, writer); compressor.WordsWritten += x => { progress += x; }; Timer t = new Timer(o => mFanoIWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25); await compressor.Encode(mWordLength); t.Dispose(); await writer.FlushBuffer(); mInputStreamFanoI.Close(); mOutputStreamFanoI.Close(); }
private async void CompressLz77Worker(object sender, DoWorkEventArgs e) { long progress = 0; var reader = new BufferedReader(2000000, mInputStreamLz77I); var writer = new BufferedWriter(2000000, mOutputStreamLz77I); var len = mInputStreamLz77I.Length; if (len == 0) { len = 1; } var compressor = await LZ77.Compressor.Create(reader.ReadByte, writer.WriteCustomLength, mHistory, mPresent); compressor.WordsWritten += x => { progress += x; //mLz77IWorker.ReportProgress(Convert.ToInt32(progress / (len / 100))); };// mLz77CompressProgress += x; Timer t = new Timer(o => mLz77IWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25); await compressor.Compress((ulong)len); t.Dispose(); await writer.FlushBuffer(); mInputStreamLz77I.Close(); mOutputStreamLz77I.Close(); }
static async Task Main(string[] args) { var ifStream = new FileStream("sample.txt", FileMode.Open, FileAccess.Read); var reader = new BufferedReader(90, ifStream); var ofStream = new FileStream("output.lz77", FileMode.Create, FileAccess.Write); var writer = new BufferedWriter(90, ofStream); var compressor = await Compressor.Create(reader.ReadByte, writer.WriteCustomLength, 1024, 256); await compressor.Compress((ulong)ifStream.Length); await writer.FlushBuffer(); ifStream.Close(); ofStream.Close(); ifStream = new FileStream("output.lz77", FileMode.Open, FileAccess.Read); reader = new BufferedReader(90, ifStream); ofStream = new FileStream("output.txt", FileMode.Create, FileAccess.Write); writer = new BufferedWriter(9, ofStream); var extr = new Extractor(reader.ReadCustomLength, writer.WriteCustomLength); await extr.Extract(); await writer.FlushBuffer(); ifStream.Close(); ofStream.Close(); }
private async void ExtractLz77Worker(object sender, DoWorkEventArgs e) { long progress = 0; var reader = new BufferedReader(2000000, mInputStreamLz77O); var writer = new BufferedWriter(2000000, mOutputStreamLz77O); var len = 1L; var extractor = new Extractor(reader.ReadCustomLength, writer.WriteCustomLength); extractor.FileLength += x => len = x; extractor.WordsWritten += x => { progress += x; }; Timer t = new Timer(o => mLz77OWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25); await extractor.Extract(); t.Dispose(); await writer.FlushBuffer(); mInputStreamLz77O.Close(); mOutputStreamLz77O.Close(); }