public static void Save(FileMode mode, IEnumerable <KeyValuePair <FileInfo, KeyStringDictionary> > data) { if (null == data) { throw new ArgumentNullException("data"); } var count = 0; using (var writers = new StreamWriterDictionary { Access = FileAccess.Write, Mode = mode, Share = FileShare.Read }) { foreach (var item in data) { if (0 == count) { writers.FirstLine = Header(item.Value); } writers.Item(item.Key).WriteLine(Line(item.Value)); count++; } } }
public virtual void Save(Lexicon lexicon) { Trace.WriteIf(Tracing.Is.TraceVerbose, string.Empty); if (null == lexicon) { throw new ArgumentNullException("lexicon"); } using (var writers = new StreamWriterDictionary("CANONICAL,SYNONYMS") { Access = FileAccess.Write, Mode = FileMode.Create, Share = FileShare.None }) { #if NET20 if (0 == IEnumerableExtensionMethods.Count(lexicon)) #else if (!lexicon.Any()) #endif { writers.Item(Location.FullName).WriteLine(string.Empty); return; } #if NET20 var items = new SortedList <string, LexicalItem>(); foreach (var item in lexicon) { items.Add(item.CanonicalForm, item); } foreach (var item in items) { var synonyms = new SortedList <string, string>(); foreach (var synonym in item.Value.Synonyms) { synonyms.Add(synonym, synonym); } writers .Item(Location.FullName) .WriteLine(StringExtensionMethods.FormatWith( "{0},{1}", CsvStringExtensionMethods.FormatCommaSeparatedValue(item.Value.CanonicalForm), CsvStringExtensionMethods.FormatCommaSeparatedValue(IEnumerableExtensionMethods.Concat(synonyms.Values, ';')))); } #else foreach (var item in lexicon.OrderBy(x => x.CanonicalForm)) { writers .Item(Location.FullName) .WriteLine("{0},{1}".FormatWith( item.CanonicalForm.FormatCommaSeparatedValue(), item.Synonyms.OrderBy(x => x).Concat(';').FormatCommaSeparatedValue())); } #endif } }
public void op_Dispose() { using (var file = new TempFile()) { var obj = new StreamWriterDictionary(); obj.Dispose(); // ReSharper disable AccessToDisposedClosure Assert.Throws<InvalidOperationException>(() => obj.Item(file.Info)); // ReSharper restore AccessToDisposedClosure } }
public int Create(IEnumerable<KeyStringDictionary> data) { if (null == data) { throw new ArgumentNullException("data"); } if (Destination.Exists) { throw new IOException("\"{0}\" already exists.".FormatWith(Destination.FullName)); } Count = 0; Stopwatch = new Stopwatch(); Stopwatch.Start(); using (var temp = new TempFile(CurrentTempDirectory.Location)) { using (var writers = new StreamWriterDictionary()) { foreach (var entry in data) { Count++; if (null == writers.FirstLine) { writers.FirstLine = Csv.Header(entry); } writers.Item(temp.Info).WriteLine(Csv.Line(entry)); } } if (Count.IsNot(0)) { temp.Info.CopyTo(Destination); Destination.SetDate(Modified); } } Stopwatch.Stop(); return Count; }
public TempCsvFile(IEnumerable<KeyStringDictionary> data) : base(CurrentTempDirectory.Location) { if (null == data) { throw new ArgumentNullException("data"); } using (var writers = new StreamWriterDictionary()) { foreach (var entry in data) { if (null == writers.FirstLine) { writers.FirstLine = Csv.Header(entry); } writers.Item(Info).WriteLine(Csv.Line(entry)); } } }
public static void Save(IEnumerable <KeyStringDictionary> data, Func <KeyStringDictionary, FileInfo> file) { if (null == data) { throw new ArgumentNullException("data"); } if (null == file) { throw new ArgumentNullException("file"); } var first = true; using (var writers = new StreamWriterDictionary { Access = FileAccess.Write, Mode = FileMode.Append, Share = FileShare.Read }) { foreach (var entry in data) { if (first) { writers.FirstLine = Header(entry); first = false; } var info = file(entry); if (null != info.Directory && !info.Directory.Exists) { info.Directory.Create(); } writers.Item(info).WriteLine(Line(entry)); } } }
public void op_Item_FileInfo() { using (var file = new TempFile()) { using (var obj = new StreamWriterDictionary()) { obj.Item(file.Info).Write("example"); } file.Info.Refresh(); Assert.True(file.Info.Exists); } }
public void op_Item_string_string_FileModeTruncate_FileAccessReadWrite_FileShareWrite_whenCalledAgain() { using (var file = new TempFile()) { using (var obj = new StreamWriterDictionary("example")) { obj.Item(file.Info.FullName, "one", FileMode.Truncate, FileAccess.ReadWrite, FileShare.Write).Write("two"); } using (var obj = new StreamWriterDictionary("example")) { obj.Item(file.Info.FullName, "one", FileMode.Truncate, FileAccess.ReadWrite, FileShare.Write).Write("two"); } var expected = "one{0}two".FormatWith(Environment.NewLine); var actual = File.ReadAllText(file.Info.FullName); Assert.Equal(expected, actual); } }
public void op_Item_string_stringNull_FileModeTruncate_FileAccessReadWrite_FileShareWrite() { using (var file = new TempFile()) { using (var obj = new StreamWriterDictionary()) { obj.Item(file.Info.FullName, null, FileMode.Truncate, FileAccess.ReadWrite, FileShare.Write); } var expected = string.Empty; var actual = File.ReadAllText(file.Info.FullName); Assert.Equal(expected, actual); } }
public void op_Item_string_stringEmpty_FileModeCreate_FileAccessReadWrite_FileShareWrite_whenCalledAgain() { using (var file = new TempFile()) { file.Info.Delete(); using (var obj = new StreamWriterDictionary()) { obj.Item(file.Info.FullName, string.Empty, FileMode.Create, FileAccess.ReadWrite, FileShare.Write); } using (var obj = new StreamWriterDictionary()) { obj.Item(file.Info.FullName, string.Empty, FileMode.Create, FileAccess.ReadWrite, FileShare.Write); } var expected = Environment.NewLine; var actual = File.ReadAllText(file.Info.FullName); Assert.Equal(expected, actual); } }
public void op_Item_string_string() { using (var file = new TempFile()) { using (var obj = new StreamWriterDictionary()) { obj.Item(file.Info.FullName, "one").Write("two"); } var expected = "one{0}two".FormatWith(Environment.NewLine); var actual = File.ReadAllText(file.Info.FullName); Assert.Equal(expected, actual); } }
public void op_Item_string_caseInsensitive() { using (var temp = new TempDirectory()) { var lower = temp.Info.ToFile("abc"); var upper = temp.Info.ToFile("ABC"); using (var obj = new StreamWriterDictionary()) { obj.Item(lower.FullName).Write("example"); obj.Item(upper.FullName).Write("example"); } const int expected = 1; var actual = temp.Info.GetFiles().Length; Assert.Equal(expected, actual); } }
public void op_Item_string_FileModeOpenOrCreate_FileAccessReadWrite_FileShareWrite() { using (var file = new TempFile()) { file.Info.Delete(); using (var obj = new StreamWriterDictionary("one")) { obj.Item(file.Info.FullName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Write).Write("two"); } var expected = "one{0}two".FormatWith(Environment.NewLine); var actual = File.ReadAllText(file.Info.FullName); Assert.Equal(expected, actual); } }
public void op_Item_stringNull() { using (var obj = new StreamWriterDictionary()) { // ReSharper disable AccessToDisposedClosure Assert.Throws<ArgumentNullException>(() => obj.Item(null as string)); // ReSharper restore AccessToDisposedClosure } }
public static void Save(IEnumerable<KeyStringDictionary> data, Func<KeyStringDictionary, FileInfo> file) { if (null == data) { throw new ArgumentNullException("data"); } if (null == file) { throw new ArgumentNullException("file"); } var first = true; using (var writers = new StreamWriterDictionary { Access = FileAccess.Write, Mode = FileMode.Append, Share = FileShare.Read }) { foreach (var entry in data) { if (first) { writers.FirstLine = Header(entry); first = false; } var info = file(entry); if (null != info.Directory && !info.Directory.Exists) { info.Directory.Create(); } writers.Item(info).WriteLine(Line(entry)); } } }
public virtual void Save(Lexicon lexicon) { Trace.WriteIf(Tracing.Is.TraceVerbose, string.Empty); if (null == lexicon) { throw new ArgumentNullException("lexicon"); } using (var writers = new StreamWriterDictionary("CANONICAL,SYNONYMS") { Access = FileAccess.Write, Mode = FileMode.Create, Share = FileShare.None }) { #if NET20 if (0 == IEnumerableExtensionMethods.Count(lexicon)) #else if (!lexicon.Any()) #endif { writers.Item(Location.FullName).WriteLine(string.Empty); return; } #if NET20 var items = new SortedList<string, LexicalItem>(); foreach (var item in lexicon) { items.Add(item.CanonicalForm, item); } foreach (var item in items) { var synonyms = new SortedList<string, string>(); foreach (var synonym in item.Value.Synonyms) { synonyms.Add(synonym, synonym); } writers .Item(Location.FullName) .WriteLine(StringExtensionMethods.FormatWith( "{0},{1}", CsvStringExtensionMethods.FormatCommaSeparatedValue(item.Value.CanonicalForm), CsvStringExtensionMethods.FormatCommaSeparatedValue(IEnumerableExtensionMethods.Concat(synonyms.Values, ';')))); } #else foreach (var item in lexicon.OrderBy(x => x.CanonicalForm)) { writers .Item(Location.FullName) .WriteLine("{0},{1}".FormatWith( item.CanonicalForm.FormatCommaSeparatedValue(), item.Synonyms.OrderBy(x => x).Concat(';').FormatCommaSeparatedValue())); } #endif } }