private void BtnLoad_Click(object sender, EventArgs e) { using (var dlg = new OpenFileDialog()) { dlg.Filter = "Log File|*.LogBin"; dlg.Multiselect = true; if (dlg.ShowDialog() == DialogResult.OK) { m_messages.Clear(); foreach (var file in dlg.FileNames) { using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { try { while (fs.ReadBoolean()) { m_messages.Add(new LogMessageSerializable(fs)); } } catch (Exception) { } } } } RefreshFilters(); } }
/// <summary> /// Reads all log messages from the supplied file. /// </summary> public static void Compact(ICollection<string> inputFileNames, string outputFileName) { LogCollection logs = new LogCollection(); foreach (var file in inputFileNames) { using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { if (stream.ReadBoolean()) { //Wrong File Version break; } if (stream.ReadNextByte() != 1) { //Wrong File Version break; } using (var zipStream = new DeflateStream(stream, CompressionMode.Decompress, true)) using (var bs = new BufferedStream(zipStream, 8192)) { while (bs.ReadBoolean()) { var message = new LogMessage(bs); logs.Pass1(message); } } } } logs.Compact(); foreach (var file in inputFileNames) { using (var stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { if (stream.ReadBoolean()) { //Wrong File Version break; } if (stream.ReadNextByte() != 1) { //Wrong File Version break; } using (var zipStream = new DeflateStream(stream, CompressionMode.Decompress, true)) using (var bs = new BufferedStream(zipStream, 8192)) { while (bs.ReadBoolean()) { var message = new LogMessage(bs); logs.Pass2(message); } } } } logs.Save(outputFileName); }