Hallo Zusammen,
mit folgendem Code wandel ich ein Textfile mit Ascii Code in ein Textfile mit normalen Daten um.
Leider schreibt er oben im Header trotzdem manche Leerzeichen mit und ich komm nicht drauf wieso.
Ich hoffe jemand findet den Fehler oder kann mir einen Tipp geben.
mit folgendem Code wandel ich ein Textfile mit Ascii Code in ein Textfile mit normalen Daten um.
Leider schreibt er oben im Header trotzdem manche Leerzeichen mit und ich komm nicht drauf wieso.
Ich hoffe jemand findet den Fehler oder kann mir einen Tipp geben.
Java:
package testabc;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class AsciiTestConvert {
public static void main (String args[]) throws FileNotFoundException{
String file = "D:\\test4.0.TXT";
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bufFis = new BufferedInputStream (fis);
PrintWriter pWriter = null;
BufferedReader reader;
try{
//Ruby Variablen:
int j = 0;
int i = 0;
pWriter = new PrintWriter (new BufferedWriter(new FileWriter("D:\\test3.0.txt")));
reader = new BufferedReader (new FileReader(file));
String a = reader.readLine(); //erste Zeile wird eingelesen
//Header einlesen
while (i<1024){
if (i != 0){
if (i % 32 == 0){
pWriter.write(";"); //Am Ende jeder Zeile wird ein Semikolon eingefügt
pWriter.println(); //Zeilenumbruch in die nächste Zeile
} //if-Bedingung ende
} //if-Bedingung ende
char c = a.charAt(i); //byteweise einlesen und Wert als Charakter senden
if (c == 32){
}
else{
if (c == 58){
pWriter.write(c + ";"); //nach einem ":" ein Semikolon einfügen
} //if-Bedingung ende
else{
pWriter.write(c);
} //else-Bedingung ende
//count nr of channels: Anzahl der Kanäle ermitteln ("/" <- j zählen)
if (c == 47){
j = j+1;
} //if-Bedingung ende
} //else-Bedingung ende
i = i+1;
} //while-Schleife ende
j = j*2;
//jeder Kanal hat 2 Zeichen
pWriter.println(); //neue Zeile einfügen
//lese die Messdaten bis Dateiende
while ((reader.readLine()) != null){
//lese die Messdaten (Anzahl der Kanäle x2) ein und gebe sie als Dezimalzahl aus
for (int b = 0; b <= j-1; b++){
int x = reader.read();
pWriter.print(x + ";");
} //for-Schleife ende
pWriter.println(); //Zeilenumbruch hinzufügen
} //while-Schleife ende
} //try-Anweisung ende
catch(IOException ex){
ex.printStackTrace();
} //catch-Anweisung ende
finally{
if (pWriter != null){
pWriter.flush();
pWriter.close();
} //if-Bedingung ende
} //finally-Anweisung ende
}
}
Anhänge
Zuletzt bearbeitet von einem Moderator: