public async Task Flush() { await writer.FlushAsync(); writer.Dispose(); var filters = new List <FilterEntry>(); using (var input = new StreamReader(temp.OpenShareableRead())) { string line; while ((line = await input.ReadLineAsync()) != null) { var filter = DatParser.ParseEntry(line); if (filter != null) { filters.Add(filter); } } } // Sort and merge the list var list = FilterCollection.Merge(filters); // Flush the list out using var stream = file.Open(FileMode.Create, FileAccess.Write, FileShare.Read); // Determine the desired format from the file extension var format = file.Extension.StartsWith(".p2p") ? FilterFileFormat.P2p : FilterFileFormat.Emule; //using var listWriter = (format == FilterFileFormat.Emule ? new EmuleWriter(stream) : (IFormatWriter)new BitTorrentWriter(stream)); using var listWriter = new P2pWriter(stream); await listWriter.Write(list, null); }
public async Task Flush() { await writer.FlushAsync(); writer.Dispose(); var filters = new List <FilterEntry>(); using (var input = new StreamReader(temp.OpenShareableRead())) { string line; while ((line = await input.ReadLineAsync()) != null) { var filter = DatParser.ParseEntry(line); if (filter != null) { filters.Add(filter); } } } // Sort and merge the list var list = FilterCollection.Merge(filters); // Flush the list out using (var stream = file.Open(FileMode.Create, FileAccess.Write, FileShare.Read)) using (var listWriter = new EmuleWriter(stream)) { await listWriter.Write(list, null); } }
public async Task Flush() { await writer.FlushAsync(); writer.Dispose(); var lines = new List <string>(); using (var input = new StreamReader(temp.OpenShareableRead())) { string line; while ((line = await input.ReadLineAsync()) != null) { lines.Add(line); } } using (var finalWriter = new StreamWriter(file.Open(FileMode.Create, FileAccess.Write, FileShare.Read))) { foreach (var line in lines.OrderBy(x => x).Distinct()) { await finalWriter.WriteLineAsync(line); } } }