public static void Main4(string[] args) { string label = "Zap!"; long capacity = 2L << 40; int blockSize = 4 << 20; using (var diskStream = File.Create("big.vhdx")) using (var disk = Disk.InitializeDynamic(diskStream, Ownership.Dispose, capacity, blockSize)) { var gpt = GuidPartitionTable.Initialize(disk); gpt.Create(gpt.FirstUsableSector, gpt.LastUsableSector, GuidPartitionTypes.WindowsBasicData, 0, null); var volume = VolumeManager.GetPhysicalVolumes(disk).First(); uint bytesPerSector = (uint)(volume.PhysicalGeometry?.BytesPerSector ?? 512); var clusterCount = 1 << 25;// uint.MaxValue - 16; var clusterSize = capacity / clusterCount; var clusterBits = (int)Math.Ceiling(Math.Log(clusterSize) / Math.Log(2)); if (clusterBits > 18) { clusterBits = 18; } //clusterBits = 20; using (var fs = ExFatFileSystem.Format(volume, new ExFatFormatOptions { SectorsPerCluster = (1u << clusterBits) / bytesPerSector }, label: label)) { } } }
public void ValidVolume() { using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx()) { Assert.IsTrue(ExFatFileSystem.Detect(testEnvironment.PartitionStream)); } }
public void ReadAllFiles() { using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx()) { using (var filesystem = new ExFatFileSystem(testEnvironment.PartitionStream)) { var allFiles = filesystem.GetFiles("", "0*", SearchOption.AllDirectories); Assert.IsTrue(allFiles.All(p => Path.GetFileName(p).StartsWith("0"))); } } }
public static void Main(string[] args) { using (var diskStream = File.OpenRead("D:\\rozina-pascal.localcopy.vhdx")) { var disk = new Disk(diskStream, Ownership.Dispose); var volume = VolumeManager.GetPhysicalVolumes(disk).First(); var volumeStream = volume.Open(); using (var fs = new ExFatFileSystem(volumeStream)) { var f = fs.FileExists(@"rozina-pascal\storage\parameters"); var d = fs.DirectoryExists(@"rozina-pascal\storage\parameters"); } } }
public void MoveFile() { using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx()) { using (var filesystem = new ExFatFileSystem(testEnvironment.PartitionStream)) { using (var a = filesystem.OpenFile("a", FileMode.Create)) a.WriteByte(1); Assert.IsTrue(filesystem.FileExists("a")); filesystem.MoveFile("a", "b"); Assert.IsFalse(filesystem.FileExists("a")); Assert.IsTrue(filesystem.FileExists("b")); } } }
public void ReadRootDirectories() { using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx()) { using (var filesystem = new ExFatFileSystem(testEnvironment.PartitionStream)) { var allDirectories = filesystem.GetDirectories(""); Assert.IsFalse(allDirectories.Contains(DiskContent.LongContiguousFileName)); Assert.IsFalse(allDirectories.Contains(DiskContent.LongSparseFile1Name)); Assert.IsFalse(allDirectories.Contains(DiskContent.LongSparseFile2Name)); Assert.IsTrue(allDirectories.Contains(DiskContent.EmptyRootFolderFileName)); Assert.IsTrue(allDirectories.Contains(DiskContent.LongFolderFileName)); } } }
public static void Main2(string[] args) { File.Copy("Empty1.vhdx", "Empty.vhdx", true); using (var disk = new Disk("Empty.vhdx")) { //var gpt = GuidPartitionTable.Initialize(disk); //gpt.Create(gpt.FirstUsableSector, gpt.LastUsableSector, GuidPartitionTypes.WindowsBasicData, 0, null); var volume = VolumeManager.GetPhysicalVolumes(disk)[1]; using (var fs = ExFatFileSystem.Format(volume)) fs.CreateDirectory("a folder"); } using (var disk = new Disk("Empty.vhdx")) { var volume = VolumeManager.GetPhysicalVolumes(disk)[1]; using (var fs2 = new ExFatFileSystem(volume.Open())) { var i = fs2.GetDirectoryInfo("a folder"); var e = fs2.GetDirectories(""); } } }