Hallo ich habe ein Problem, ich versuche eine .txt aus meiner Anwendung aus zu löschen. Bisher hatte ich da nie Probleme mit doch jetzt funktioniert es leider nicht immer. Warum es nicht IMMER funktioniert erklär ich jetzt:
Wenn ich z.B.
Java:
File f =newFile("C:/test.txt");
f.delete();
aufrufe klappt es.
Versuch ich jedoch den folgendes:
Java:
File f =newFile("C:/"+textfieldA.getText()+".txt";
funktioniert es nicht. Ich verstehe die Ursache nicht, es wird auch keine Exception geworfen.
Hab schon überlegt ob die Ursache iwo anders im Programm liegt. Können laufende Threads diese Methode irgendwie behindern? Wenn ja, wieso funktioniert es dann ohne Übergabe des Dateinamen aus einem Textfeld?
publicvoiddeleteGroup(){try{File f =newFile("C:/Testordner/"+textfeldA.getText()+".txt");
f.delete();}catch(IOException e){
textfeldB.setText("Datei wurde nicht gelöscht");}}
baue den String zusammen, setze daneben den fertigen String, vergleiche die beiden mit equals, was kommt raus?
erstelle zu beiden File-Objekte, rufe jeweils exists() auf bzw. gib das aus,
versuche erst mit dem zusammengesetzen zu löschen, wenn das wie erwartet weiterhin nicht geht, dann mit dem anderen File-Objekt löschen,
gib danach wieder exists() von beiden aus
kommst du irgendwie zum vorherigen Zustand zurück wo das Löschen noch geht?
durchaus möglich dass es allein am Zeitpunkt der Ausführung im Programm liegt
wie nrg schon sagt, sind Streams von dir beteiligt? close()?
Es sind zu dem Zeitpunkt bei dem die Methode aufgerufen wird keine Streams offen, diese werden bei den benötigten Methoden direkt im Anschluss .close() gesetzt. Es wird wie NRG sagt keine IOE geworfen doch auch mit exception e wird nix geworfen. Geöffnet ist die Datei natürlich auch nicht, darauf bin ich schon gekommen bei Linux wäre es egal hab aber Windoof drauf.
Wenn ich die File-Objekte .delete() logge bekomm ich in beiden Fällen ein false zurück. Spiel es eine Rolle das die Methode von einem Actionlistener aufgerufen wird ? Sprich bei Buttonklick?
File#exists() liefer true > die Datei existiert bzw. dein Pfad ist gültig
du kannst im gleichen Verzeichnis eine Datei erstellen > Berechtigung OK (bei Windows)
du könntest die Datei manuell löschen oder umbennen > die Datei ist nicht gelockt
Also mehr fällt mir eigentlich fast nicht ein... Überprüf das am besten nochmal (vorallem 3.)