| Autor | Beitrag | 
| Metrik 
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: Mo 11.12.06 18:54 
 
Hallo
 Ich bin gerade dabei ein Tool zu schreiben, dass einem den computer von Müll entfernt    		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 
 |     class Cleaner{
 static void Main(string[] args)
 {
 delFiles();
 }
 public static void delFiles()
 {
 string path = @"c:\";
 string searchpattern = "*.tmp";
 
 string[] directories = Directory.GetFiles(path,searchpattern,SearchOption.AllDirectories);
 
 foreach (string directory in directories)
 {
 File.Delete(directory);
 Console.WriteLine("Deleting {0}",directory);
 }
 }
 }
 |  Das funktioniert eigentlich auch ganz nett, nur wenn ich auf ein Verzeichnis keinen Zugriff habe, geht gar nichts.
 Wenn ich das ganz mit try abfange: 
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 
 |     class Cleaner{
 static void Main(string[] args)
 {
 delFiles();
 Console.ReadLine();
 }
 public static void delFiles()
 {
 try
 {
 string path = @"c:\";
 string searchpattern = "*.tmp";
 
 string[] directories = Directory.GetFiles(path, searchpattern, SearchOption.AllDirectories);
 
 foreach (string directory in directories)
 {
 File.Delete(directory);
 Console.WriteLine("Deleting {0}", directory);
 }
 }
 catch (Exception exception)
 {
 Console.WriteLine(exception.Message);
 }
 }
 }
 |  Das Problem ist hier, wenn er einen Fehler finden (Zugriff verweigert auf ....) dann macht er nicht mehr weiter, sonder bleibt in der Exception stecken. Gibts nicht ne möglichkeit, damit er dieses Verzeichnis einfach überspringt?
 Könnt ihr mir sagen wir ich das lösen kann ?
 Metrik | 
|  | 
| DareDevil 
          Beiträge: 70
 
 Windows7
 C# (VS 2010)
 
 | 
Verfasst: Mo 11.12.06 22:35 
 
Du musst das try catch anders setzen:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 
 | class Cleaner{
 static void Main(string[] args)
 {
 delFiles();
 }
 public static void delFiles()
 {
 try
 {
 string path = @"c:\";
 string searchpattern = "*.tmp";
 string[] directories =   Directory.GetFiles(path,searchpattern,SearchOption.AllDirectories);
 foreach (string directory in directories)
 {
 File.Delete(directory);
 Console.WriteLine("Deleting {0}",directory);
 }
 }
 catch
 {
 Console.WriteLine(exception.Message);
 }
 }
 |  Der fehler tritt ja bei dem "File.Delete()" auf dann müsste der Quelletext so aussehen.
 Da das try die ganze Anweisung umschließt sammt der Schleife wird die Schleife abgebrochen wenn "File.Delete()" nicht ausgeführt werden kann damit in das catch gesprungen werden kann.
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 
 | class Cleaner{
 static void Main(string[] args)
 {
 delFiles();
 }
 public static void delFiles()
 {
 string path = @"c:\";
 string searchpattern = "*.tmp";
 string[] directories =   Directory.GetFiles(path,searchpattern,SearchOption.AllDirectories);
 foreach (string directory in directories)
 {
 try
 {
 <span style="color: red">File.Delete(directory);</span>
 Console.WriteLine("Deleting {0}",directory);
 }
 catch
 {
 Console.WriteLine(exception.Message);
 }
 }
 }
 }
 |  Greez
 Pascal | 
|  | 
| Metrik  
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: Mi 13.12.06 16:22 
 
Hallo
 Danke, hätte ich eigentlich selber draufkommen können     	  | Zitat: |  	  | try {
 File.Delete(directory);
 Console.WriteLine("Deleting {0}",directory);
 }
 catch
 {
 Console.WriteLine(exception.Message);
 }
 | 
 Was machst du genau mit der Zeile File.Delete(directory);  ?
 Das mit den Farben ist mir nicht ganz klar. Hab das auch ausprobiert, hat bei mit nicht gefunzt    Metrik | 
|  | 
| Metrik  
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: Mi 13.12.06 16:25 
 
Hmm, hab das jetzt nochmal ausprobiert ...
 Der Fehler wird in der zeile
 		                       C#-Quelltext 
 									| 1:2:
 
 |  string[] directories =   Directory.GetFiles(path,searchpattern,SearchOption.AllDirectories);foreach (string directory in directories)
 |  erzeugt.
 Was soll ich jetzt machen ? 
 Metrik | 
|  | 
| Kha 
          Beiträge: 3803
 Erhaltene Danke: 176
 
 Arch Linux
 Python, C, C++ (vim)
 
 | 
Verfasst: Mi 13.12.06 17:59 
 
	  |  Metrik hat folgendes geschrieben: |  	  | Danke, hätte ich eigentlich selber draufkommen können   | 
 dann solltest du doch nun ebenfalls selbst herausfinden können, wo ein weiterer Catch-Block eingefügt werden muss. | 
|  | 
| Metrik  
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: Fr 15.12.06 18:25 
 
Hallo
 Irgendwie hat mir bis jetzt noch keiner so richtig helfen könnnen ....
 Geht mal von vollgendem source aus: 
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 
 |     class Cleaner{
 static void Main(string[] args)
 {
 delFiles();
 }
 public static void delFiles()
 {
 string path = @"c:\";
 string searchpattern = "*.tmp";
 string[] directories = Directory.GetFiles(path,searchpattern,SearchOption.AllDirectories);
 foreach (string directory in directories)
 {
 File.Delete(directory);
 Console.WriteLine("Deleting {0}",directory);
 }
 }
 }
 |  Jetzt mal die Testsituation, dass der ausführende Benutzer auf das Verzeichnis c:\test keinerlei Rechte hat.
 Dann geht nämlich gar nichts    Kann mir wer eine Lösung zeigen, die dieses Problem löst? vielleicht ist auch mein Ansatz falsch zum das Problem zu lösen. Jeder Tipp willkommen.
 Metrik | 
|  | 
| Christian S. 
          Beiträge: 20451
 Erhaltene Danke: 2264
 
 Win 10
 C# (VS 2019)
 
 | 
Verfasst: Fr 15.12.06 18:32 
 
Laut Doku wirft File.Delete doch eine UnauthorizedAccessException, wenn es nicht geht. Die kannst doch abfangen. _________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
 | 
|  | 
| Metrik  
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: Sa 16.12.06 17:56 
 
Hallo
 Hat mir nicht wirklich geholfen... Ich verstehe das selber nicht, warum dass das auf keine Weise geht. Könnte nicht einer, einfach schnell den sourcecode kopieren und das bei sich ausporbieren ? 
 Aus meiner Sicher entsteht der Fehler nicht bei der Zeile
 		                       C#-Quelltext 
 									| 1:
 | File.Delete(directory);					 |  sondern hier bei SearchOption.AllDirectories
 		                       C#-Quelltext 
 									| 1:
 | string[] directories = Directory.GetFiles(path,searchpattern,SearchOption.AllDirectories);					 |  Wäre euch dankbar, wenn ihr mir helfen könntet
 MEtrik | 
|  | 
| Metrik  
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: Sa 16.12.06 18:05 
 
Ich muss hier vielleicht noch anfügen, ich kann zwar den error abfangen, damit nicht alles abstürtz, aber dann sucht der nicht weiter nach Verzeichnissen. 
Der soll aber alle durchsuchen, die er lesen darf.
 
 MEtrik
 | 
|  | 
| Metrik  
          Beiträge: 80
 
 Win XP, Win Vista
 C# (VS 2003, #Develop)
 
 | 
Verfasst: So 17.12.06 09:40 
 
Hallo 
Gibt es nicht eine Möglichkeit, um dem Programm zu sagen, dass es einfach dieses Verzeichnis überstpringen und weiterfahren soll ?
 
 
 Metrik
 | 
|  |