hallo,
es geht um die Wartung der Festplatte – win7. Ich will sehen, wann ein
Ordner zugemüllt ist um dann gezielt löschen/verschieben zu können. Dazu
habe ich ein kleines Programm geschrieben:
1 | private void button8_Click(object sender, EventArgs e)
|
2 | {
|
3 | long size = 0;
|
4 |
|
5 |
|
6 | ListView1.Items.Clear();
|
7 |
|
8 | int i = 0;
|
9 | string sourceDirectory = TextBox3.Text;
|
10 | //DriveInfo[] allDrives = DriveInfo.GetDrives();
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | var txtFiles = Directory.EnumerateDirectories (sourceDirectory, "*.*", SearchOption.TopDirectoryOnly);
|
16 | //try
|
17 | {
|
18 | foreach (string currentFile in txtFiles)
|
19 | {
|
20 | string fileName = currentFile;//.Substring(sourceDirectory.Length + 1);
|
21 |
|
22 | ListView1.Items.Add(i.ToString());
|
23 | ListView1.Items[i].SubItems.Add(fileName);
|
24 |
|
25 |
|
26 | size = 0;
|
27 | var dirInfo = new DirectoryInfo(fileName);
|
28 |
|
29 |
|
30 | try
|
31 | {
|
32 | foreach (FileInfo fi in dirInfo.GetFiles("*", SearchOption.AllDirectories))
|
33 | {
|
34 | size += fi.Length;
|
35 | }
|
36 | ListView1.Items[i++].SubItems.Add(size.ToString("N"));
|
37 | }
|
38 | catch (Exception ex)
|
39 | {
|
40 | ListView1.Items[i++].SubItems.Add("???");
|
41 |
|
42 | }
|
43 |
|
44 | }
|
45 | //listBox2.Sorted = true;
|
46 | }
|
47 | }
|
48 | }
|
Funktioniert wie es soll – nur die Systemdateien werden nicht angezeigt.
Auf dieser habe ich auch im Explorer keinen Zugriff. Gibt es eine
Möglichkeit, Zugriff auf die Systemdateien zu erhalten?
Im Prinzip werden zunächst die Ordner in einer Liste gesammelt, dann
jeder Ordner komplett nach jeder Datei gescannt und die jeweiligen
Größen der Dateien addiert. Im Explorer kann ich mir unter Eigenschaften
die Größe der Ordner anzeigen lassen. Gibt es irgendwo einen direkten
Zugriff auf die Eigenschaft »Size« oder ist der Weg, die Dateien einzeln
zu scannen richtig?
Danke für Unterstützung