Changeset 1221
- Timestamp:
- 9/29/2009 2:46:01 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/eraser6/Eraser.DefaultPlugins/FileSystems/Fat.cs
r1210 r1221 92 92 FileSystemEntriesEraseProgress callback) 93 93 { 94 Fat32Api api = new Fat32Api(info); 94 using (FileStream stream = info.Open(FileAccess.ReadWrite, FileShare.ReadWrite)) 95 { 96 int directoriesCleaned = 0; 97 Fat32Api api = new Fat32Api(info, stream); 98 HashSet<uint> eraseQueueClusters = new HashSet<uint>(); 99 List<FatDirectoryEntry> eraseQueue = new List<FatDirectoryEntry>(); 100 { 101 FatDirectoryEntry entry = api.LoadDirectory(string.Empty); 102 eraseQueue.Add(entry); 103 eraseQueueClusters.Add(entry.Cluster); 104 } 105 106 using (VolumeLock volumeLock = info.LockVolume(stream)) 107 { 108 while (eraseQueue.Count != 0) 109 { 110 if (callback != null) 111 callback(directoriesCleaned, directoriesCleaned + eraseQueue.Count); 112 113 FatDirectory currentDir = api.LoadDirectory(eraseQueue[0].FullName); 114 eraseQueue.RemoveAt(0); 115 116 //Queue the subfolders in this directory 117 foreach (KeyValuePair<string, FatDirectoryEntry> entry in currentDir.Items) 118 if (entry.Value.Type == FatDirectoryEntryTypes.Directory) 119 { 120 //Check that we don't have the same cluster queued twice (e.g. for 121 //long/8.3 file names) 122 if (eraseQueueClusters.Contains(entry.Value.Cluster)) 123 continue; 124 125 eraseQueueClusters.Add(entry.Value.Cluster); 126 eraseQueue.Add(entry.Value); 127 } 128 129 currentDir.ClearDeletedEntries(); 130 } 131 } 132 } 95 133 } 96 134 }
Note: See TracChangeset
for help on using the changeset viewer.
