public void TestOpenFile() { var contents = BinString.FromTextString("Hello, world!\n", System.Text.Encoding.ASCII); var dd = DataDir.Create(DataDirType.Temporary); string filename = DateTime.Now.Ticks.ToString("x") + ".tmp"; string fullFilename = Path.Combine(dd.Path, filename); Assert.IsFalse(File.Exists(fullFilename)); Assert.ThrowsException <FileNotFoundException>(() => dd.OpenFile(filename, FileMode.Open, FileAccess.Read)); using (var stream = dd.OpenFile(filename, FileMode.Create, FileAccess.ReadWrite)) { stream.Write(contents); stream.Close(); } Assert.IsTrue(File.Exists(fullFilename)); Assert.AreEqual(contents, (BinString)File.ReadAllBytes(fullFilename)); using (var stream = dd.OpenFile(filename, FileMode.Open, FileAccess.Read)) { var read = stream.ReadBinString(contents.Length); Assert.AreEqual(contents, read); } File.Delete(fullFilename); Assert.ThrowsException <ArgumentException>(() => dd.OpenFile(null, FileMode.Create, FileAccess.ReadWrite)); Assert.ThrowsException <ArgumentException>(() => dd.OpenFile(string.Empty, FileMode.Create, FileAccess.ReadWrite)); }
public void TestGetPath() { var data = BinString.FromBytes("C0FFEEC0FFEEC0FFEEC0FFEE"); var dd = DataDir.Create(DataDirType.Temporary); string filename = DateTime.Now.Ticks.ToString("x") + ".tmp"; string fullPath = dd.GetFullPath(filename); Assert.IsFalse(File.Exists(fullPath)); dd.WriteAllBytes(filename, data); Assert.AreEqual(data, (BinString)File.ReadAllBytes(fullPath)); data = BinString.FromTextString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", Encoding.ASCII); File.WriteAllBytes(fullPath, data); Assert.AreEqual(data, dd.ReadAllBytes(filename)); Assert.IsTrue(File.Exists(fullPath)); dd.DeleteFile(filename); Assert.IsFalse(File.Exists(fullPath)); }
public string GetNewFileName(string hint = null, string extension = null) { var filebase = new StringBuilder(); if (string.IsNullOrEmpty(hint)) { int hash = BinString.FromTextString(Path, Encoding.UTF8).GetHashCode(); filebase.Append("temp"); filebase.Append((hash & 0xffffff).ToString(CultureInfo.InvariantCulture)); filebase.Append((DateTime.Now.Ticks & 0xffffffffffff).ToString(CultureInfo.InvariantCulture)); } else { int hash = BinString.FromTextString(hint, Encoding.UTF8).GetHashCode(); filebase.Append((hash & 0xffffff).ToString(CultureInfo.InvariantCulture)); filebase.Append((DateTime.Now.Ticks & 0xffffff).ToString(CultureInfo.InvariantCulture)); foreach (char c in hint.ToLowerInvariant()) { if (filebase.Length >= 16) { break; } if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z')) { filebase.Append(c); } } } extension = string.IsNullOrEmpty(extension) ? "" : ("." + extension.TrimStart('.')); string file = filebase.ToString() + extension; int i = 0; while (File.Exists(GetFullPath(file))) { i++; file = $"{filebase}-{i}{extension}"; } return(file); }
public override string ToString() { var sb = new StringBuilder(); foreach (var kvp in _Values) { if (sb.Length > 0) { sb.Append('&'); } sb.Append(kvp.Key); if (!string.IsNullOrEmpty(kvp.Value)) { sb.Append('='); sb.Append(BinString.FromTextString(kvp.Value, Encoding.UTF8).ToUrlString(false, CultureInfo.InvariantCulture)); } } return(sb.ToString()); }
public void WriteAllText(string filePath, string data, Encoding encoding) => WriteAllBytes(filePath, BinString.FromTextString(data, encoding));