.rar Datei löschen

T1GGeR1990

Grünschnabel
Guten Abend,

ich möchte mir ein Programm schreiben, um .rar Dateien löschen zu können und zwar keine, welche ich vorher erstellt habe, z.B. via Java , sondern bereits existierende Dateien, z.B. nach einem Download.

Das Problem, dass ich dabei habe ist, Java löscht diese Dateien nicht. Als ich dann mal einen SecurityManager davor gehangen habe, konnte ich auch sehen, dass Java keine Rechte auf die Dateien hat.

Wie kann ich nun Java das Recht geben diese Dateien zu löschen?

Anbei der Quelltext:
Code:
public void delete(File pFile)
	{
		String[] list =pFile.list();
		
		for (int i=0;i<list.length;i++)
		{
			File f = new File(list[i]);
			if(f.isDirectory())
			{
				delete(f);
			}
			else
			{
				if(f.getName().endsWith(".rar"))
				{
					
					try
					{
					SecurityManager sm = new SecurityManager();
					sm.checkWrite(f.getName());
					f.delete();
					System.out.println(f.delete());
					}catch(SecurityException e)
					{
						System.out.println("Kein Schreibrecht!");
					}
					
				}
			}
		}
	}

Außerdem ist mir gerade beim Debuggen aufgefallen, dass Java in Zeile 8 nicht prüfen kann, ob das File ein Verzeichnis ist ("isDirectory cannot be resolved").
Woran liegt das?

Vielen Dank
T1GGeR1990 :)
 
Die Lösung ist ganz einfach: Die Datei, die du da zu löschen versuchst, existiert nicht :-p

Mit pfile.list() listest du die Datei-NAMEN auf, ohne den zugehörigen Pfad. Wenn du mit diesen Namen ein neues File-Objekt erstellst, dann fehlt die Pfad-Angabe, und deshalb referenziert das resultierende File Objekt eine Datei mit dem gleichen Namen, die in deinem Classpath liegt.

Bei mir wird zum Beispiel das Verzeichnis "C:\delRarTest" mit der Datei "test.rar" an deine Funktion übergeben.

Das Programm versucht dann die Datei "C:\Dokument...\workspace\TESTSTUFF\test.rar" zu löschen. Klar, dass das nicht klappen kann, die Datei gibts ja nicht. Was auch gleich erklärt, warum die isDirectory Methode bei dir so komisch reagiert.

Also Lösung des Problems: Den Pfad mit übernehmen.

EDIT: Noch mal die Fehlermeldung beim isDirectory angesehen. Klingt eher, als hättest du die Sourcen nicht, kann das sein?

EDIT2:

Code:
...
f.delete();
                    System.out.println(f.delete());
...
Du löschst die Datei 2x ...

Gruß,

RoCMe
 
Zuletzt bearbeitet:
Danke für die Antwort. Habe einem File, statt nur den Namen den ganzen Pfad gegeben, aber löschen tut er die Datei immer noch ebenso wenig wie die Prüfung von isDirectory funktioniert.

Wieso lösche ich die Datei zwei mal und was meinst du mit ich habe die Sourcen nicht?

Vielen Dank
T1GGeR1990 :)
 
Achso, ich dachte ich würde damit nur den Rückgabewert der Funktion erhalten, doof von mir.
Ich werde morgen ein bisschen rumtüfteln und mich dann wieder melden.

Danke
T1GGeR1990 :)
 
Zurück