G
Guest_JAVA
Gast
Hallo zusammen,
ich sitze seit Tagen an folgendem kniffligen Thema und komme nicht weiter:
Anforderung:
Ich habe als Ausgangsdatei eine Textdatei die wie folgt aufgebaut ist:
Die Datei ist in mehrere Blöcke aufgeteilt, jeder Block geht von #12de bis #12de.
Ich möchte in den normalen Textfeldern (Ascii-Text) eine Zahl suchen und den kompletten Block (von Start-#12de bis Ende-#12de) ausschneiden. Das funktioniert auch schon im groben!
Mein Problem ist jedoch, das der binäre Block beim lesen / schreiben immer kaputt geht!
Nun zu meiner Frage, wie kann ich zeilenweiße eine Binär-Datei lesen / Textblock auslesen / schreiben, ohne dass mir der binäre Teil kaputt geht?
Mein Quelltext sieht momentan wie folgt aus:
ich sitze seit Tagen an folgendem kniffligen Thema und komme nicht weiter:
Anforderung:
Ich habe als Ausgangsdatei eine Textdatei die wie folgt aufgebaut ist:
Code:
#12de
Ascii-Text ...
Ascii-Text ...
Binärer Block ( 1 Zeile )
Ascii-Text ...
Ascii-Text ...
#12de
#12de
Neuer Ascii-Text ...
Neuer Ascii-Text ...
Binärer Block ( 1 Zeile )
Neuer Ascii-Text ...
Neuer Ascii-Text ...
#12de
Die Datei ist in mehrere Blöcke aufgeteilt, jeder Block geht von #12de bis #12de.
Ich möchte in den normalen Textfeldern (Ascii-Text) eine Zahl suchen und den kompletten Block (von Start-#12de bis Ende-#12de) ausschneiden. Das funktioniert auch schon im groben!
Mein Problem ist jedoch, das der binäre Block beim lesen / schreiben immer kaputt geht!
Nun zu meiner Frage, wie kann ich zeilenweiße eine Binär-Datei lesen / Textblock auslesen / schreiben, ohne dass mir der binäre Teil kaputt geht?
Mein Quelltext sieht momentan wie folgt aus:
Java:
//Variablendeklaration
psn = "0123 123123123";
int last_12de = 0;
int pod_start = 0;
int pod_end = 0;
int j = 0;
boolean psn_found=false;
boolean stop=false;
String line_r = "";
ArrayList<String> img_line = new ArrayList<String>();
File sourceFile = new File("/home/xxx/workdirectory_pod_gen/IMG.dat");
File destFile = new File ("/home/xxx/workdirectory_pod_gen/OUT.txt");
FileInputStream in;
try {
in = new FileInputStream(sourceFile);
byte[] buffer = new byte[64]; // Das soll zeilenweise funktionieren
for(int i; (i = in.read(buffer)) != -1 & (stop != true); )
{
line_r = new String(buffer, 0, i);
//FileOutputStream os = new FileOutputStream(destFile);
//Speichern Start / Ende
if(line_r.contains("#12de"))
last_12de = j;
//Wenn Nummer gefunden, dann psn_found=true & Speicherung des Startwert zum Ausschneiden
if(line_r.contains(psn))
{
psn_found=true;
pod_start = last_12de;
}
//Wenn Nummer gefunden, dann Schleifenabbruch, sobald naechstes #12de gefunden
//Speicherung des Endewert zum Ausschneiden
if(psn_found)
{
if(line_r.contains("#12de"))
{
System.out.println("Nummer \"" + psn + "\" gefunden!");
pod_end = last_12de;
stop = true;
}
}
//Schreiben der Datei in eine Arraylist
img_line.add(line_r);
j++;
}
System.out.println("POD-Start: " + pod_start + " -- POD-Ende: " + pod_end);
for (int k = pod_start; k <= pod_end; k++)
{
System.out.println(img_line.get(k));
}
/*
//Schreiben der Datei
if (psn_found == true)
{
//Datei anlegen
OutputStreamWriter dataWriter = new OutputStreamWriter(new FileOutputStream("/home/xxx/workdirectory_pod_gen/OUT.txt"));
BufferedWriter bw = new BufferedWriter(dataWriter);
//Datei fuellen
for (int j = pod_start; j <= pod_end; j++)
{
System.out.println(img_line.get(j));
bw.write(img_line.get(j) + "\n");
}
bw.close();
return 0;
}
*/
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return -1;
}