Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
 public void WriteAllText(string filePath, string data, Encoding encoding) => WriteAllBytes(filePath, BinString.FromTextString(data, encoding));