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 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