public void ClusterInfo() { // 'Big' files have clusters NtfsFileSystem ntfs = FileSystemSource.NtfsFileSystem(); using (Stream s = ntfs.OpenFile(@"file", FileMode.Create, FileAccess.ReadWrite)) { s.Write(new byte[(int)ntfs.ClusterSize], 0, (int)ntfs.ClusterSize); } var ranges = ntfs.PathToClusters("file"); Assert.Equal(1, ranges.Length); Assert.Equal(1, ranges[0].Count); // Short files have no clusters (stored in MFT) using (Stream s = ntfs.OpenFile(@"file2", FileMode.Create, FileAccess.ReadWrite)) { s.WriteByte(1); } ranges = ntfs.PathToClusters("file2"); Assert.Equal(0, ranges.Length); }
private void ProcessFiles(string[] files) { BitArray ba = new BitArray((int)fs.TotalClusters); foreach (var file in files) { try { Range <long, long>[] clusters = fs.PathToClusters(file); foreach (var range in clusters) { int end = (int)(range.Offset + range.Count); for (int i = (int)range.Offset; i < end; i++) { ba.Set(i, true); } } } catch (FileNotFoundException ex) { System.Console.WriteLine("FileNotFound: {0}", file); } } // BitArray ba = defraglib.IOWrapper.GetVolumeMap(@"f:"); ClusterForm cf = new ClusterForm(); cf.Icon = Icon; cf.Text = Text + " - Cluster Map"; //cf.clusterBitmaps1.GradientStart = Color.WhiteSmoke; //cf.clusterBitmaps1.GradientEnd = Color.Black; //cf.clusterBitmaps1.GradientSteps = 8; cf.clusterBitmaps1.Clusters = ba; cf.Show(); }