Datei- referenz schließen

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

ich schreibe in eine XML- Datei, welche sich in einem Ordner befindet, erzeuge dann eine jar daraus und möchte dann den Ordner wieder löschen, nur leider kann ich den Ordner nicht löschen, da die xml- Datei noch eine Referenz darauf hat, obwohl ich wie unten zu sehen ist, alles auf null setze und auch den writer schließe,
Weiß da jemand eine Abhilfe, damit ich diesen Ordner löschen kann?



Code:
try {                      
            outputFactory = XMLOutputFactory.newInstance(); 
            writer = outputFactory.createXMLEventWriter(new FileOutputStream(pathFile));             
            eventFactory = XMLEventFactory.newInstance();                          
            createPreferences(writer, eventFactory, encoding);                       
            Enumeration iterator = ((DefaultMutableTreeNode)tree.getModel().getRoot()).preorderEnumeration();            
            newXMLLine(writer, eventFactory);            
            space = eventFactory.createCharacters("    ");                     
            XMLEvent preferences = eventFactory.createEndElement( "", "", "Preferences" );          
            writer.add(preferences);
            writer.flush();
            writer.close();                  
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (XMLStreamException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        finally {
            try {
                writer.close();
                outputFactory = null;
                eventFactory = null;
                space = null;
                startEntries = null;
                startColor = null;
            } catch (XMLStreamException ex) {
                ex.printStackTrace();
            }
        }
 
du erzeugst aus einer xml datei ein jar ?

wenn das xml also nur temporär ist - nutze doch File.createTemp (?) und setze es so, dass es bei beenden der applikation gelöscht wird.
 
Liste aller Dateien im Ordner holen und dann alle Dateien in einer Schleife löschen und danach dann das Verzeichnis selber löschen.
So sollte es eigentlich gehen.
 
Ich machs genau so wie unten aber leider habe ich irgendwo eine Referenz auf nur eine Datei und deshalb kann ich die Datei nicht löschen, wie kann ich herausbekommen, wo noch eine Referenz darauf ist?


Code:
private void deleteDir(File dir) {
        File[] files = dir.listFiles();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory()) {
                    deleteDir(files[i]); // Verzeichnis leeren und anschließend löschen
                }
                else {
                    files[i].delete(); // Datei löschen
                }
            }
        dir.delete(); // Ordner löschen
        }
    }
 
Ich habe zum hinausschreiben wie üblich einen Dekorierer benutzt und dieses Objekt nicht geschlossen,
Da war der Hund begraben,
Dankschön für die Anregungen,
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben