コード例 #1
0
        public void TestGetRecursiveFilesWithSubsetSearch()
        {
            var tempLongPathFilename = uncDirectory.Combine(Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                Assert.IsTrue(tempLongPathFilename.Exists());
                var newEmptyFile1 = Util.CreateNewEmptyFile(tempLongPathFilename, "A-file");
                var newEmptyFile2 = Util.CreateNewEmptyFile(tempLongPathFilename, "B-file");

                try {
                    var randomFileName = newEmptyFile1.GetFileName();

                    var di    = new DirectoryInfo(uncDirectory);
                    var files = di.GetFiles("A*", SearchOption.AllDirectories).ToArray();
                    Assert.AreEqual(1, files.Length);
                    Assert.IsTrue(files.Any(f => f.Name == newEmptyFile1.GetFileName() && f.DirectoryName == newEmptyFile1.GetDirectoryName()));
                    Assert.IsFalse(files.Any(f => f.Name == newEmptyFile2.GetFileName() && f.DirectoryName == newEmptyFile2.GetDirectoryName()));
                    Assert.IsFalse(files.Any(f => f.Name == Filename.GetFileName() && f.DirectoryName == Filename.GetDirectoryName()));
                }
                finally {
                    Pri.LongPath.File.Delete(newEmptyFile1);
                    Pri.LongPath.File.Delete(newEmptyFile2);
                }
            }
            finally {
                const Boolean recursive = true;
                Pri.LongPath.Directory.Delete(tempLongPathFilename, recursive);
            }
        }
コード例 #2
0
        public void TestGetRecursiveFilesWithAllSearch()
        {
            var tempLongPathFilename = longPathDirectory.Combine(Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                Assert.IsTrue(tempLongPathFilename.Exists());
                var newEmptyFile = Util.CreateNewEmptyFile(tempLongPathFilename);

                try {
                    var randomFileName = newEmptyFile.GetFileName();

                    var di    = new DirectoryInfo(longPathDirectory);
                    var files = di.GetFiles("*", SearchOption.AllDirectories).ToArray();
                    Assert.AreEqual(2, files.Length);
                    Assert.IsTrue(files.Any(f => f.Name == Filename));
                    Assert.IsTrue(files.Any(f => f.Name == randomFileName));
                }
                finally {
                    File.Delete(newEmptyFile);
                }
            }
            finally {
                const Boolean recursive = true;
                Directory.Delete(tempLongPathFilename, recursive);
            }
        }
コード例 #3
0
        public void TestGetAccessControlSections()
        {
            var tempLongPathFilename = uncDirectory.Combine(Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var di       = new DirectoryInfo(tempLongPathFilename);
                var security = di.GetAccessControl(AccessControlSections.Access);
                Assert.IsNotNull(security);
                Assert.AreEqual(typeof(FileSystemRights), security.AccessRightType);
                Assert.AreEqual(typeof(FileSystemAccessRule), security.AccessRuleType);
                Assert.AreEqual(typeof(FileSystemAuditRule), security.AuditRuleType);
                Assert.IsTrue(security.AreAccessRulesCanonical);
                Assert.IsTrue(security.AreAuditRulesCanonical);
                Assert.IsFalse(security.AreAccessRulesProtected);
                Assert.IsFalse(security.AreAuditRulesProtected);
                var securityGetAccessRules = security.GetAuditRules(true, true, typeof(NTAccount)).Cast <FileSystemAccessRule>();
                Assert.AreEqual(0, securityGetAccessRules.Count());
                var perm      = security.GetAccessRules(true, true, typeof(NTAccount));
                var ntAccount = new NTAccount(WindowsIdentity.GetCurrent().Name);
                var rule      = perm.Cast <FileSystemAccessRule>().SingleOrDefault(e => ntAccount == e.IdentityReference);
                Assert.IsNotNull(rule);
                Assert.IsTrue((rule.FileSystemRights & FileSystemRights.FullControl) != 0);
            }
            finally {
                Pri.LongPath.Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #4
0
        public void TestGetFilesWithSearch()
        {
            var di    = new DirectoryInfo(uncDirectory);
            var files = di.GetFiles("*").ToArray();

            Assert.AreEqual(1, files.Length);
        }
コード例 #5
0
        public void TestGetFilesWithSearchWithNoResults()
        {
            var di    = new DirectoryInfo(uncDirectory);
            var files = di.GetFiles("giberish").ToArray();

            Assert.AreEqual(0, files.Length);
        }
コード例 #6
0
        public void TestParentOnRoot()
        {
            var di     = new DirectoryInfo(@"C:\");
            var parent = di.Parent;

            Assert.IsNull(parent);
        }
コード例 #7
0
        public void TestMoveToNullPath()
        {
            var randomDirectoryName   = Path.GetRandomFileName();
            var tempLongPathDirectory = uncDirectory.Combine(randomDirectoryName);
            var di = new DirectoryInfo(tempLongPathDirectory);

            Assert.Throws <ArgumentNullException>(() => di.MoveTo(null));
        }
コード例 #8
0
        public void TestMoveToDifferentRoot()
        {
            var randomDirectoryName   = Path.GetRandomFileName();
            var tempLongPathDirectory = uncDirectory.Combine(randomDirectoryName);
            var di = new DirectoryInfo(tempLongPathDirectory);

            Assert.Throws <IOException>(() => di.MoveTo(@"D:\"));
        }
コード例 #9
0
        public void TestParentPathEndingWithSlash()
        {
            var di     = new DirectoryInfo(uncDirectory + @"\");
            var parent = di.Parent;

            Assert.IsNotNull(parent);
            Assert.AreEqual(uncDirectory.GetDirectoryName(), parent.FullName);
        }
コード例 #10
0
        public void TestRoot()
        {
            var di   = new DirectoryInfo(uncDirectory);
            var root = di.Root;

            Assert.IsNotNull(root);
            Assert.AreEqual(new System.IO.DirectoryInfo(uncDirectory).Root.FullName, root.FullName);
        }
コード例 #11
0
        public void TestCreateInvalidSubdirectory()
        {
            var di = new DirectoryInfo(uncDirectory);

            Assert.Throws <ArgumentException>(() => {
                var newDi = di.CreateSubdirectory(@"\");
            });
        }
コード例 #12
0
        public void TestParent()
        {
            var di     = new DirectoryInfo(uncDirectory);
            var parent = di.Parent;

            Assert.IsNotNull(parent);
            Assert.AreEqual(uncDirectory.GetDirectoryName(), parent.FullName);
        }
コード例 #13
0
        public void TestGetFiles()
        {
            var di    = new DirectoryInfo(uncDirectory);
            var files = di.GetFiles().ToArray();

            Assert.AreEqual(1, files.Length);
            Assert.IsTrue(files.Any(f => f.Name == Filename));
        }
コード例 #14
0
        public void TestSetLastAccessTimeMissingFile()
        {
            var filename = longPathDirectory.Combine("gibberish.ext");
            var dateTime = DateTime.Now.AddDays(1);
            var di       = new DirectoryInfo(filename);

            Assert.Throws <FileNotFoundException>(() => di.LastAccessTime = dateTime);
        }
コード例 #15
0
        public void TestMoveToEmptyPath()
        {
            var randomDirectoryName   = Path.GetRandomFileName();
            var tempLongPathDirectory = longPathDirectory.Combine(randomDirectoryName);
            var di = new DirectoryInfo(tempLongPathDirectory);

            Assert.Throws <ArgumentException>(() => di.MoveTo(String.Empty));
        }
コード例 #16
0
        public void TestMoveToSamePathWithSlash()
        {
            var randomDirectoryName   = Path.GetRandomFileName();
            var tempLongPathDirectory = uncDirectory.Combine(randomDirectoryName) + @"\";
            var di = new DirectoryInfo(tempLongPathDirectory);

            Assert.Throws <IOException>(() => di.MoveTo(tempLongPathDirectory));
        }
コード例 #17
0
 private void CreateDirectoryStructure(Pri.LongPath.DirectoryInfo directory)
 {
     if (!directory.Parent.Exists)
     {
         CreateDirectoryStructure(directory.Parent);
     }
     directory.Create();
 }
コード例 #18
0
        public void TestSetLastWriteTimeUtcMissingFile()
        {
            var filename = uncDirectory.Combine("gibberish.ext");
            var dateTime = DateTime.UtcNow.AddDays(1);
            var di       = new DirectoryInfo(filename);

            Assert.Throws <FileNotFoundException>(() => di.LastWriteTimeUtc = dateTime);
        }
コード例 #19
0
 public IEnumerable <FileInfo> GetFileChangesSince(DateTime time, string directory)
 {
     Pri.LongPath.DirectoryInfo dInf = new Pri.LongPath.DirectoryInfo(directory);
     foreach (var fileInfo in dInf.GetFiles("*", System.IO.SearchOption.AllDirectories))
     {
         if (fileInfo.CreationTimeUtc >= time || fileInfo.LastWriteTimeUtc >= time)
         {
             yield return(fileInfo);
         }
     }
 }
コード例 #20
0
        public void TestCreateWithFileSecurity()
        {
            var tempLongPathFilename = uncDirectory.Combine(Path.GetRandomFileName());
            var di = new DirectoryInfo(tempLongPathFilename);

            try {
                di.Create(new DirectorySecurity());
                Assert.IsTrue(tempLongPathFilename.Exists());
            }
            finally {
                di.Delete();
            }
        }
コード例 #21
0
        public void TestReplaceIgnoreMergeWithReadonlyBackupPath()
        {
            var tempLongPathFilename = new StringBuilder(uncDirectory).Append(@"\").Append("filename.ext").ToString();
            var tempBackupPathName   = new StringBuilder(uncDirectory).Append(@"\readonly").ToString();
            var di = new DirectoryInfo(tempBackupPathName);

            di.Create();

            var attr = di.Attributes;

            di.Attributes = attr | FileAttributes.ReadOnly;
            var tempBackupLongPathFilename = new StringBuilder(tempBackupPathName).Append(@"\").Append("backup").ToString();

            using (var fileStream = File.Create(tempLongPathFilename)) {
                fileStream.WriteByte(42);
            }

            var tempLongPathFilename2 = new StringBuilder(uncDirectory).Append(@"\").Append("filename2.ext").ToString();

            using (var fileStream = File.Create(tempLongPathFilename2)) {
                fileStream.WriteByte(52);
            }

            try {
                const Boolean ignoreMetadataErrors = true;
                File.Replace(tempLongPathFilename, tempLongPathFilename2, tempBackupLongPathFilename, ignoreMetadataErrors);

                using (var fileStream = File.OpenRead(tempLongPathFilename2)) {
                    Assert.AreEqual(42, fileStream.ReadByte());
                }

                Assert.IsFalse(File.Exists(tempLongPathFilename));
                Assert.IsTrue(File.Exists(tempBackupLongPathFilename));
            }
            finally {
                di.Attributes = attr;

                if (File.Exists(tempLongPathFilename))
                {
                    File.Delete(tempLongPathFilename);
                }

                File.Delete(tempLongPathFilename2);
                File.Delete(tempBackupLongPathFilename);

                if (tempBackupPathName.Exists())
                {
                    Pri.LongPath.Directory.Delete(tempBackupPathName);
                }
            }
        }
コード例 #22
0
        public void TestEnumerateFilesSearchWithNoResults()
        {
            var tempLongPathFilename = uncDirectory.Combine(Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var di = new DirectoryInfo(uncDirectory);
                Assert.AreEqual(0, di.EnumerateFiles("gibberish*").Count());
            }
            finally {
                Pri.LongPath.Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #23
0
        public void TestEnumerateDirectoriesWithWildcardSearchAndOptionNoResults()
        {
            var tempLongPathFilename = longPathDirectory.Combine(Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var di = new DirectoryInfo(longPathDirectory);
                Assert.AreEqual(0, di.EnumerateDirectories("gibberish*", SearchOption.TopDirectoryOnly).Count());
            }
            finally {
                Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #24
0
        public void TestCreateSubdirectory()
        {
            var di             = new DirectoryInfo(uncDirectory);
            var randomFileName = Path.GetRandomFileName();
            var newDi          = di.CreateSubdirectory(randomFileName);

            try {
                Assert.IsNotNull(newDi);
                Assert.IsTrue(di.Exists);
            }
            finally {
                newDi.Delete();
            }
        }
コード例 #25
0
        public void TestCreate()
        {
            var tempLongPathFilename = uncDirectory.Combine(Path.GetRandomFileName());
            var di = new DirectoryInfo(tempLongPathFilename);

            di.Create();

            try {
                Assert.IsTrue(di.Exists);
            }
            finally {
                Pri.LongPath.Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #26
0
        public void TestCreateSubdirectoryWithFileSecurity()
        {
            var           di             = new DirectoryInfo(uncDirectory);
            var           randomFileName = Path.GetRandomFileName();
            DirectoryInfo newDi          = null;

            try {
                newDi = di.CreateSubdirectory(randomFileName, new DirectorySecurity());
                Assert.IsNotNull(newDi);
                Assert.IsTrue(di.Exists);
            }
            finally {
                newDi?.Delete();
            }
        }
コード例 #27
0
        public void TestGetLastWriteTimeUtc()
        {
            var tempLongPathFilename = longPathDirectory.Combine(Pri.LongPath.Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var dateTime = Directory.GetLastWriteTimeUtc(tempLongPathFilename);
                var fi       = new DirectoryInfo(tempLongPathFilename);
                Assert.AreEqual(fi.LastWriteTimeUtc, dateTime);
            }
            finally {
                Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #28
0
        public void TestGetLastAccessTime()
        {
            var tempLongPathFilename = uncDirectory.Combine(Pri.LongPath.Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var dateTime = Pri.LongPath.Directory.GetLastAccessTime(tempLongPathFilename);
                var fi       = new DirectoryInfo(tempLongPathFilename);
                Assert.AreEqual(fi.LastAccessTime, dateTime);
            }
            finally {
                Pri.LongPath.Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #29
0
        public void TestEnumerateFilesSearchWithResults()
        {
            var tempLongPathFilename = uncDirectory.Combine(Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var di    = new DirectoryInfo(uncDirectory);
                var files = di.EnumerateFiles("*").ToArray();
                Assert.AreEqual(1, files.Length);
                Assert.IsTrue(files.Any(f => f.Name == Filename));
            }
            finally {
                Pri.LongPath.Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #30
0
        public void TestSetLastAccessTime()
        {
            var tempLongPathFilename = longPathDirectory.Combine(Pri.LongPath.Path.GetRandomFileName());

            tempLongPathFilename.CreateDirectory();

            try {
                var dateTime = DateTime.Now.AddDays(1);
                Directory.SetLastAccessTime(tempLongPathFilename, dateTime);
                var fi = new DirectoryInfo(tempLongPathFilename);
                Assert.AreEqual(fi.LastAccessTime, dateTime);
            }
            finally {
                Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #31
0
ファイル: Directory.cs プロジェクト: jerriclynsjohn/LongPath
 public static DateTime GetLastWriteTimeUtc(String path)
 {
     var di = new DirectoryInfo(path);
     return di.LastWriteTimeUtc;
 }
コード例 #32
0
ファイル: Directory.cs プロジェクト: jerriclynsjohn/LongPath
 public static DateTime GetCreationTimeUtc(String path)
 {
     var di = new DirectoryInfo(path);
     return di.CreationTimeUtc;
 }
コード例 #33
0
 public IEnumerable<FileInfo> GetFileChangesSince(DateTime time, string directory)
 {
     Pri.LongPath.DirectoryInfo dInf = new Pri.LongPath.DirectoryInfo(directory);
     foreach (var fileInfo in dInf.GetFiles("*", System.IO.SearchOption.AllDirectories))
     {
         if (fileInfo.CreationTimeUtc >= time || fileInfo.LastWriteTimeUtc >= time)
         {
             yield return fileInfo;
         }
     }
 }
コード例 #34
0
ファイル: DirectoryTests.cs プロジェクト: KsWare/LongPath
        public void TestSetCreationTime()
        {
            var tempLongPathFilename = Path.Combine(longPathRoot, Path.GetRandomFileName());
            Directory.CreateDirectory(tempLongPathFilename);
            Assert.IsTrue(Directory.Exists(tempLongPathFilename));
            try
            {
                DateTime dateTime = DateTime.Now.AddDays(1);
                Directory.SetCreationTime(tempLongPathFilename, dateTime);
                var di = new DirectoryInfo(tempLongPathFilename);
                Assert.AreEqual(di.CreationTime, dateTime);

            }
            finally
            {
                Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #35
0
        private List<string> GetFileNames()
        {
            List<string> list = new List<string>();
            DirectoryInfo di = new DirectoryInfo(GetDirectory());
            if (di != null)
            {
                foreach (FileInfo fi in di.GetFiles())
                {
                    list.Add(fi.Name);
                }
            }

            return list;
        }
コード例 #36
0
ファイル: DirectoryTests.cs プロジェクト: KsWare/LongPath
 public void TestGetLastWriteTimeUtc()
 {
     var tempLongPathFilename = Path.Combine(longPathDirectory, Path.GetRandomFileName());
     Directory.CreateDirectory(tempLongPathFilename);
     try
     {
         var dateTime = Directory.GetLastWriteTimeUtc(tempLongPathFilename);
         var fi = new DirectoryInfo(tempLongPathFilename);
         Assert.AreEqual(fi.LastWriteTimeUtc, dateTime);
     }
     finally
     {
         Directory.Delete(tempLongPathFilename);
     }
 }
コード例 #37
0
ファイル: DirectoryTests.cs プロジェクト: KsWare/LongPath
        public void TestSetLastAccessTimeUtc()
        {
            var tempLongPathFilename = Path.Combine(longPathDirectory, Path.GetRandomFileName());
            Directory.CreateDirectory(tempLongPathFilename);
            try
            {
                DateTime dateTime = DateTime.UtcNow.AddDays(1);
                Directory.SetLastAccessTimeUtc(tempLongPathFilename, dateTime);
                var fi = new DirectoryInfo(tempLongPathFilename);
                Assert.AreEqual(fi.LastAccessTimeUtc, dateTime);

            }
            finally
            {
                Directory.Delete(tempLongPathFilename);
            }
        }
コード例 #38
0
ファイル: DirectoryTests.cs プロジェクト: KsWare/LongPath
 public void TestCurrentDirectory()
 {
     var di = new DirectoryInfo(".");
     Assert.AreEqual(di.FullName, Directory.GetCurrentDirectory());
 }