XML-Datei geht bei voller Festplatte verloren

MeistaK

Neues Mitglied
Hallo,

ich verwende XML Dateien als Konfigurationsdateien in Java

Ich öffne die Datei am Anfang mit
Java:
 data =xmlFuncObj.getDataFromFile(filepath+"/settings/"+customer+".xml");

Danach ändere ich parameter in der XML Datei:
Java:
xmlFuncObj.writePositionsToFile(filePositions, filepath+"/settings/"+customer+".xml");

ich verwende DocumentBuilderFactory:
Java:
    public boolean writePositionsToFile(int[] positions, String fileName) throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException, TransformerException
    {
            File file = new File(fileName);

            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            Document doc = docBuilder.parse (file);

            // extract service settings
            NodeList listOfServices = doc.getElementsByTagName("service");
            int totalServices = listOfServices.getLength();

            if(totalServices !=positions.length)
            {
                return false;
            }


            for(int s=0; s<listOfServices.getLength() ; s++){


                Node serviceNode = listOfServices.item(s);
                if(serviceNode.getNodeType() == Node.ELEMENT_NODE){

                    Element serviceElement = (Element)serviceNode;

                    //-------
                    NodeList servicePosition = serviceElement.getElementsByTagName("position");
                    Element positionElement = (Element)servicePosition.item(0);
                    NodeList textPositionList = positionElement.getChildNodes();
                    ((Node)textPositionList.item(0)).setNodeValue(Integer.toString(positions[s]));
                    //-------/

                }//end of if clause

            }//end of for loop with s var

         // Prepare the DOM document for writing
            Source source = new DOMSource(doc);
            // Prepare the output file

            Result result = new StreamResult(file);
            // Write the DOM document to the file
            Transformer xformer = TransformerFactory.newInstance().newTransformer();
            xformer.transform(source, result);
            return true;

    }
Das Problem ist nun, dass wenn kein Festplattenspeicher mehr verfügbar ist, der Inhalt der xml Datei verschwindet und nur noch eine leere Datei übrig bleibt. Dies finde ich überraschend, da die Datei ja schon existiert und die Grösse sich normalerweise nicht ändert. Gibt es eine elegante Lösung das Problem zu vermeiden?

Vielen Dank
Klaus
 
Zuletzt bearbeitet von einem Moderator:
wie bitte, kein Festplattenspeicher vorhanden?
in einer solchen Situation kann man doch wirklich alles erwarten, auch direkt einen Programmabsturz oder zumindest irgendein Exception beim Schreiben ohne sinnvolles Ergebnis

das hat doch gar nix mit XML zu, oder hast du es im Falle einer einfachen Txt-Datei erfolgreich getestet?
vielleicht schreibt das XML-Framework erst eine temporäre Datei..

und 'Java-Anfängerthemen' scheint mir dazu auch vermessen
 
Hallo SlaterB,

ersteinmal danke für deine Antwort.

Naja so sehe ich das nicht. Kein Festplattenspeicher ist ein Problem, das wohl bei einigen Leuten des öfteren Auftritt und daher sollte das im Programm auch berücksichtigt werden. Völlig akzeptabel wäre, dass die Aenderungen nicht zurückgeschrieben werden können. Die Tatsache, dass aber die gesamte Datei, die vorher existent war komplett verschwindet ist wirklich nicht so toll. Man stelle sich das mal bei Word vor: Riesen Dokument erzeugt, kein Platz mehr um Aenderungen zu speichern, ganzes Dokument verschwindet...

Das ist korrekt, dass das wahrscheinlich nichts mit XML zu tun, daher hab ich es auch hier gepostet. Mit einer txt datei hat man wohl das selbe Problem.

Was jetzt daran vermessen sein soll, dieses bei Java Basics zu posten kann ich nicht nachvollziehen. Meiner Meinung nach ist das eine Sache die für einen Profi kein Problem ist, da ich es nicht hinbekommen hab stehts jetzt bei Anfänger.
 
sie es lieber sorum: in den Anfänger-Bereich gehören Themen, auf die praktisch jeder Anfänger stoßen kann,
wie addiert man zwei ints,
nicht XML-Bearbeitung und Betriebssystem-Probleme

aber müßig darüber zu diskutieren, verschoben und Titel etwas verdeutlicht
 
Man stelle sich das mal bei Word vor: Riesen Dokument erzeugt, kein Platz mehr um Aenderungen zu speichern, ganzes Dokument verschwindet...

Wenn es ganz dumm läuft, stürzt dir sogar das Betriebssystem ab, wenn kein freier Speicher mehr da ist. Vermutlich kommen deshalb auch die vielen Warnungen, wenn der Platz ausgeht (zumindest glaube ich mich daran erinnern zu können unter Windows) ;-)

Im übrigen traue ich das Word glatt zu. Hast mal versucht, was da passiert?
 

Neue Themen


Zurück
Oben