Java Writer funktioniert nicht mehr

Joseppe82

Mitglied
Hallo zusammen!
Ich bin neu hier und habe ein kleines Problem 😉
Also zuerst einmal kurz ein Wort vorab, ich hatte java mal kurz in der Ausbildung aber hab es nie kapiert und brauche es auch eigentlich nie. Ich habe also echt wenig Ahnung bis gar keine aber evtl. ist ja doch jemand so nett und hilft mir mit einem praktischen Besipiel oder so.

Ok, folgendes Problem.
Ich habe ein System welches mir Textdateien ausgibt und im Filesystem speichert.
Die Dateien sehen etwa so aus:

Wert x
33.6667
Wert y
2.7890
...
usw usw.
etwa 700 untereinander und dazwischen ab und zu noch irgendwelcher anderer Kram sag ich jetzt mal.
Ziel ist es nach mehreren bestimmten festgelegten Werten zu suchen also zB "Wert g" und "Wert f" und jeweils die Zahlen die genau in der Zeile darunter stehen durch einen anderen auch vorher festegelegten wert zu ersetzen.

Wie gesagt ohne gross plan davon zu haben habe ich mir folgende, Möglichkeit zusammengebastelt.

import java.io.*;

public class LineReplacer {

public static void main(String[] someArguments) throws IOException {
FileReader input = new FileReader(someArguments[0]);
FileWriter output = new FileWriter(someArguments[1]);
BufferedReader reader = new BufferedReader(input);
BufferedWriter writer = new BufferedWriter(output);
String line = reader.readLine();


while (line!=null) {
if (line.equals("Wert f") || (line.equals("Wert g")) || (line.equals("Wert_Temp")) || (line.equals("ge_temp")))
{
writer.write(line);
writer.newLine();
writer.write ("25.891947837189");
line = reader.readLine();
writer.flush();
}
else {
writer.write(line);
}

writer.newLine();
line = reader.readLine();
}
reader.close();
writer.flush();
writer.close();
}
}

Somit wird die zahl unter den Werten durch die 25... ersetzt und in eine neue Datei geschrieben. Aufgerufen habe ich das dann per Batchdatei mit den parametern für Quell und Zieldatei und danach das wieder zurück kopiert und überschreiben.
So diletantisch das auch sein mag es hat immer funktioniert.

Nun hat sich aber in dem Quellprogramm wohl etwas geändert. Die Textdateien sehen auf den ersten Blick immer noch genauso aus, aber es kommt hinter meinem java programm nur noch Müll heraus, also ohne leerzeichen. irgendwelche Sonderzeichen zwischendrin usw.
Kann es sein dass die Quelldateien nun anders codiert sind oder was? keine Ahnung ich kenn mich da echt nicht aus, aber weiss evtl jemand eine Lösung?
Alternativ, falls jemand zeit und Lust hat wäre ich natürlich auch für einen Weg dankbar, der den Wert direkt in der Originaldatei ersetzt. Für einen Profi ist das sicher ein Witz sowas zu schreiben, ich habs leider nicht hinbekomen.

Also für Hilfe wäre ich euch sehr dankbar.

VG
Joseppe
 
Ich sehe auf den ersten Blick keinen derartigen Fehler.
Aber Java Code IMMER in Java-Tags, damit der Code auch lesbar ist.

Guck dir mal die Klasse Properties an. Die macht fast das, was du möchtest aber dafür musst du dich nicht darum kümmern, wie das geschiet.


PS: wie soll sich denn etwas geändert haben?
 
Properties? Ohje das sagt mir mal wieder gar nix^^ Naja ich google mal.
Oder kannst du mir das genauer erklären?

Ich weiss nicht was sich geändert haben soll.
Ich kann nur sagen, dass die Datei Inhaltlich genauso aufgebaut ist wie die alte.
Lasse ich mein java Programm über Dateien laufen die aus unserem Produktivsystem kommen, wo noch die alte Version des Programms läuft, das die Dateien bereitstellt, funktioniert alles wie es soll.
Im Testsystem, wo eine neuere Version läuft, kommt nur Müll heraus obwohl die Dateien wie gesagt wenn man sie in einem Editor öffnet völlig gleich sind, bis auf das in der neueren version ein paar Werte mehr drin stehen.

VG
Joseppe
 
Zuletzt bearbeitet:
Decompilier doch mal die alte Version und vergleiche Beide.

Properties lässt dich Werte mit Namen verbinden. Also genau das, was du haben willst. Allerdings steht da dann nicht

Wert a
19363

sondern

Wert a=19363
 
Hm, ich kann das auch noch nochmal neu kompilieren aber das nützt auch nix. Ich denke dass es irgendwie an den textdateien liegt, die aus dem neueren Programm kommen?
Ich habe auch schon versucht die Bedingung wegzulassen, also einfach alles was in der Datei steht einfach mit einem write() in eine neue Datei schreiben zu lassen. Ergebniss leider das Gleiche. :-(

Hm, das mit dem "Wert a=" nützt mir leider nix es sollte wieder genauso dastehen wie davor nur eben mit den geänderten Werten.
 
hast du dir die Quelldatei einmal genauer angeschaut und mit einer alten, noch "funktionierden" Datei verglichen?
Evtl. sind da Leerzeichen dazugekommen, so dass deine if-Bedingung nicht mehr matched, oder andere "linefeets", also Zeilenumbrüche...etc
Vielleicht hilft auch ein einfaches "trim()" auf den String, oder oder oder...dafür bräuchten wir einmal die Quelldatei und das gewünschte Ergebnis...
 
Dann debug doch mal. Du führst deinen Code aus und lässt dir alle Schrtte ausgeben oder du benutzt den Debugger uns guckst dir direkt die Belegung der Variablen an. So überprüfst du jeden Schritt in dem Programm, bis du den Fehler gefunden hast oder du sicher sein kannst, dass es nicht an deinem Programm liegt.
 
Ja hab die mir echt genau angeschaut, aussehen tun die vollkommen gleich wenn man sie mit einem Notepad aufmacht.
Die Quelldateien ich muss mal schauen ob ich euch die zur Verfügung stellen kann, da stehen vertrauliche Daten drin, die müsste ich glaub erst irgendwie rauslöschen oder ändern.

Ja was benutze ich denn am besten zum debuggen? Irgendetwas einfaches bitte 😉
Bis jetzt hab ich nur das jdk installiert, keine "Entwicklungsumgebung" etc, was empfehlt ihr mir denn zum Debuggen?
 
Den eclipse Debugger. 😀

Oder du arbeitest mit Sysouts, was der erste Schritt sein sollte.
Mit dem JDK direkt habe ich noch nie gearbeitet. Ich weiß nicht, ob da ein Debugger bei ist.
 

Zurück
Oben