Пример #1
0
        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);
        }
Пример #2
0
        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();
        }