Textfile nach Stromausfall leer

eskimo328

Aktives Mitglied
Hi zusammen
ab und zu tritt bei den Nutzern unserer Anwendung folgendes Problem auf:

  1. Ein Datentransfer wird gestartet, d.h. Daten werden aus dem Hauptsystem vom Server geladen und die Objekte serialisiert (als .ser Datei gespeichert)
  2. In einer Textdatei/Properydatei wird eine Property "issaving=1" geschrieben, mittels der Methode, siehe unten.
  3. Objekte werden deserialisiert und Daten entsprechend in lokaler H2-Datenbank gespeichert.
Beim letzten Schritt geht der Akku des Notebooks leer und das Noteook geht aus, weil kein Nezteil eingesteckt ist.
Der nächste Start der Anwendung schlägt fehl, weil die Propertydatei leer ist.
Wie kann es sein, dass nach einem Stromausfall nichts mehr in der Datei drin steht?

Das ist die Methode um die Werte in der Propertiesdatei zu speichern:
Java:
public void setProperty(String key, String value) {    	
        this.globalProperties.setProperty(key, value);
    	
    	FileOutputStream fos = null; 
        
        try {
        	fos = new FileOutputStream(this.iniFile);
			this.globalProperties.store(fos, "");
			
			Logger.log("Stored property: "+key+"="+value, this);
		} 
        catch (FileNotFoundException e) {
        	Logger.printStackTrace(e, this);
		}
        catch (IOException e) {
			Logger.printStackTrace(e, this);
		}
        finally {
        	IOUtils.close(fos);
        }
    }
 
S

SlaterB

Gast
du redest so abstrakt von Stromausfall und 'kann das sein', immerhin auch von entfernten Nutzern,
hast du es lokal selber getestet? direkt nach Ausführung der Methode muss die Datei doch vorhanden sein
mit korrekten Inhalt oder tatsächlich anders beobachtet?

im Programm könnte es eine zweite Methode geben, die einliest als Gegencheck,
gibt es wenigstens ein Log, welches bis zum Ausfall klaglos funktioniert und diese Information aufnehmen könnte?

problematisch ist hier in engen Grenzen, dass immer wieder in dieselbe Datei geschrieben wird, direkt beim Schreibvorgang
wird die Datei immer erst auf leer gesetzt, dann mit Inhalt befüllt,
das könnte mit mehreren Dateinamen besser behandelt werden,
 

eskimo328

Aktives Mitglied
Ich konnte das Problem vorhin 2 Mal reproduzieren. Also Akku entfernen und Notebook nur mit Netzteil starten. Dann die Anwendung und die entsprechende Verarbeitung starten, bei der das Problem auftritt. Während der Verarbeitung habe ich dann den Stecker gezogen.

Der Log-Eintrag "Stored property: isSaving=1" ist vorhanden. Danach kommen noch zwei weitere Log-Einträge und dann hört die Log auf. Daher gehe ich von aus, das die Property auch korrekt gesetzt wurde und die Property in der File gespeichert wurde. Ansonsten müsste eine Exception geloggt worden sein.

Wieso mit mehreren Dateinamen, das ist mir nicht ganz klar, wie meinst du das?
 
S

SlaterB

Gast
> wie meinst du das?
ich verstehe nicht was du nicht verstehst, wie meinst du das?

ein rotes Tuch für mich, der Kahlschlag jeder Diskussion, zumindest wenn schon Text dasteht,
ich möchte nicht alles beliebig neuformulieren, es steht schon einiges da, schreibe wenigstens was du jeweils verstehst oder nicht,
wenn es um eine 'leere Datei' als Grundproblem geht und ich u.a. von "direkt beim Schreibvorgang wird die Datei immer erst auf leer gesetzt" spreche, kann ich pauschales 'häh' nicht akzeptieren ;)
(ich hatte es vorher noch drastischer formuliert, ist schon entschäfte Version ;) )

aber egal, nach deiner Beschreibung geht es ja sowieso nicht um Abbruch direkt beim Schreiben

--------

> Der Log-Eintrag "Stored property: isSaving=1" ist vorhanden. Danach kommen noch zwei weitere Log-Einträge und dann hört die Log auf.

wieviel ist das denn in Zeit, sitzt du währenddessen am Gerät und hast du die Datei geprüft?
muss aber nicht sein, wie gesagt, Vorschlag: "im Programm könnte es eine zweite Methode geben, die einliest als Gegencheck,"

wenn dieser Check positiv ist und auch Logeintrag dazu, dann kann man die Datei ja wohl als vorhanden annehmen,
falls keine Zeit für diesen Check bleibt, dann war sowieso insgesamt reichlich knapp

sollte es gar positiven Check geben und immer noch falsche Datei? das wäre dann etwas heftiger

-----

freilich sollte es auch direkt gehen,
einen Mini-Hinweis habe ich noch, dass die Log-Ausgabe in diesem speziellen Problemfall vielleicht zur erhöhten Sicherheit lieber erst nach dem close() stattfinden sollte,

aber 'eigentlich' müsste es auch direkt funktionieren, Properties.store() hat ein flush() eingebaut,
was mich zur Einsicht bringt, dass ich anscheinend bisher nicht viel beitragen kann, da passt mein obiges Gepolter besonders wenig ;)
naja, immerhin hast du paar zusätzliche Informationen geschrieben
 

Lumaraf

Bekanntes Mitglied
Die Änderungen an der Datei werden erstmal nur in die Caches vom Betriebssystem geschrieben. Es kann ein paar Sekunden dauern bis die Daten auch tatsächlich auf die Festplatte geschrieben werden.

Füg mal vor dem schließen noch ein
Code:
fos.getFD().sync();
ein, das erzwingt das schreiben auf die Festplatte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
S Prüfen ob Textfile existiert Allgemeine Java-Themen 9
M Textfile erstellen Allgemeine Java-Themen 11
T Input/Output Zeilenumbrüche beim exportieren in eine Textfile Allgemeine Java-Themen 7
D welchen line brak benutzt ein geg. textfile Allgemeine Java-Themen 3
K Scanner - große Textfile, nur 0 ab betim. Wert Allgemeine Java-Themen 4
N Encoding Unicode Textfile Allgemeine Java-Themen 5
E TextFile in Array reinspeichern Allgemeine Java-Themen 3
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
P Textfile -> Array -> JTable Allgemeine Java-Themen 9
P Textfile Encoding herausfinden Allgemeine Java-Themen 2
F Umlaute: E-Mail per JavaMail und Textfile Allgemeine Java-Themen 5
I Attribute in Textfile auslesen Allgemeine Java-Themen 13
M Zugriff auf Resource (Textfile) in einem Jar? Allgemeine Java-Themen 2
S TextFile aus JAR auslesen Allgemeine Java-Themen 3
R In Textfile schreiben - append Allgemeine Java-Themen 5
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
H Best Practice setHeader in jsp nach RequestDispatcher.include Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
M .jar nach Datei prüfen Allgemeine Java-Themen 2
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
M Fasta nach Mustern durchsuchen dauert zu lange Allgemeine Java-Themen 2
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
Thallius Neuen Prozess starten, der auch nach Beedingung des Starter-Prozesses weiterläuft? Allgemeine Java-Themen 5
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
A Funktionen aufrufen nach Schema x Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben