public void CreateDirectoryDirect() { using (var cleaner = new TestFileCleaner()) { using (var directory = DirectoryMethods.CreateDirectoryHandle(cleaner.TempFolder)) { directory.IsInvalid.Should().BeFalse(); string name = System.IO.Path.GetRandomFileName(); using (var subdir = DirectoryMethods.CreateDirectory(directory, name)) { subdir.IsInvalid.Should().BeFalse(); FileMethods.DirectoryExists(Paths.Combine(cleaner.TempFolder, name)).Should().BeTrue(); } } } }
public void QueryDosVolumePathBasic() { string tempPath = FileMethods.GetTempPath(); using (var directory = DirectoryMethods.CreateDirectoryHandle(tempPath)) { // This will give back the NT path (\Device\HarddiskVolumen...) string fullName = HandleMethods.GetObjectName(directory); string fileName = FileMethods.GetFileName(directory); string deviceName = fullName.Substring(0, fullName.Length - fileName.Length); string dosVolumePath = DeviceMethods.QueryDosVolumePath(deviceName); tempPath.Should().StartWith(dosVolumePath); tempPath.Should().Be(dosVolumePath + fileName + @"\"); } }
public void CreateRelativeToDirectoryHandle() { using (var cleaner = new TestFileCleaner()) { string fileName = System.IO.Path.GetRandomFileName(); using (var directory = DirectoryMethods.CreateDirectoryHandle(cleaner.TempFolder)) { directory.IsInvalid.Should().BeFalse(); using (var file = FileMethods.CreateFileRelative(fileName, directory, CreateDisposition.Create)) { file.IsInvalid.Should().BeFalse(); } FileMethods.FileExists(Paths.Combine(cleaner.TempFolder, fileName)).Should().BeTrue(); } } }
public void OpenDirectoryDirect() { using (var cleaner = new TestFileCleaner()) { using (var directory = DirectoryMethods.CreateDirectoryHandle(cleaner.TempFolder)) { directory.IsInvalid.Should().BeFalse("can open the root directory"); string name = System.IO.Path.GetRandomFileName(); string path = Paths.Combine(cleaner.TempFolder, name); DirectoryMethods.CreateDirectory(path); using (var subdir = DirectoryMethods.CreateDirectoryHandle(directory, name)) { subdir.IsInvalid.Should().BeFalse("can open subdir from handle"); } } } }
public void GetVolumeNameBasic() { string tempPath = FileMethods.GetTempPath(); using (var directory = DirectoryMethods.CreateDirectoryHandle(tempPath)) { // This will give back the NT volume path (\Device\HarddiskVolumen\) try { string name = FileMethods.GetVolumeName(directory); name.Should().StartWith(@"\Device\"); } catch (NotImplementedException) { // Needs Windows 10 System.Environment.OSVersion.Version.Major.Should().BeLessThan(10); } } }
public void GetBasicInfoByHandleBasic() { using (var cleaner = new TestFileCleaner()) { string tempPath = cleaner.TempFolder; string tempFileName = cleaner.GetTestPath(); using (var directory = DirectoryMethods.CreateDirectoryHandle(tempPath)) { var directoryInfo = FileMethods.GetFileBasicInformation(directory); directoryInfo.Attributes.Should().HaveFlag(FileAttributes.Directory); using (var file = FileMethods.CreateFile(tempFileName, CreationDisposition.CreateNew)) { var fileInfo = FileMethods.GetFileBasicInformation(file); fileInfo.Attributes.Should().NotHaveFlag(FileAttributes.Directory); fileInfo.CreationTimeUtc.Should().BeAfter(directoryInfo.CreationTimeUtc); } } } }
public void DeleteDirectoryBasic() { using (var temp = new TestFileCleaner()) { string directoryPath = temp.GetTestPath(); DirectoryMethods.CreateDirectory(directoryPath); using (var directory = DirectoryMethods.CreateDirectoryHandle(directoryPath)) { directory.IsInvalid.Should().BeFalse(); } DirectoryMethods.RemoveDirectory(directoryPath); Action action = () => { using (var directory = DirectoryMethods.CreateDirectoryHandle(directoryPath)) { } }; action.ShouldThrow <System.IO.FileNotFoundException>(); } }
public void GetStreamInfoByHandleBasic() { using (var cleaner = new TestFileCleaner()) { string tempPath = cleaner.TempFolder; string tempFileName = cleaner.GetTestPath(); using (var directory = DirectoryMethods.CreateDirectoryHandle(tempPath)) { var directoryInfo = FileMethods.GetStreamInformation(directory); directoryInfo.Should().BeEmpty(); using (var file = FileMethods.CreateFile(tempFileName, CreationDisposition.CreateNew)) { var fileInfo = FileMethods.GetStreamInformation(file); fileInfo.Should().HaveCount(1); var info = fileInfo.First(); info.Name.Should().Be(@"::$DATA"); info.Size.Should().Be(0); info.AllocationSize.Should().Be(0); } } } }
public void GetStandardInfoByHandleBasic() { using (var cleaner = new TestFileCleaner()) { string tempPath = cleaner.TempFolder; string tempFileName = cleaner.GetTestPath(); using (var directory = DirectoryMethods.CreateDirectoryHandle(tempPath)) { var info = FileMethods.GetFileStandardInformation(directory); info.Directory.Should().BeTrue(); } using (var file = FileMethods.CreateFile(tempFileName, CreationDisposition.CreateNew)) { var info = FileMethods.GetFileStandardInformation(file); info.Directory.Should().BeFalse(); info.NumberOfLinks.Should().Be(1); info.DeletePending.Should().BeFalse(); info.AllocationSize.Should().Be(0); info.EndOfFile.Should().Be(0); } } }
private IntPtr CreateDirectoryHandle(string fileName, string subDirectory) { return(DirectoryMethods.CreateDirectoryHandle(_directory, fileName)); }