convertASCII in Java - worgtsone.scienceontheweb.net (mail

Werbung
convertASCII in Java
worgtsone.scienceontheweb.com - mailto: worgtsone @ hush.com
2013-07-18 – 18. Juli 2013
Inhaltsverzeichnis
1 Intro
1
2 convertHin
2
3 convertHer
3
Disclaimer
Wissen ist zum Teilen da. Ich teile mein Wissen mit Ihnen, lieber Kollege.
Ich bin aber nicht perfekt. Unter [email protected] nehme ich dankbar Ihre
Verbesserungsvorschläge entgegen.
*
Legal Blurb: Alle Informationen in diesem Dokument sind falsch, unvolständig,
irreführend, irrelevant und / oder funktionieren einfach nicht.
Wenn Sie es trotzdem benutzen, und es geht dabei etwas kaputt, ist das Ihr Problem,
nicht meins.
*
Bitte teilen Sie meine Web-Adresse nicht Ihren Schülern mit.
1
Intro
Java kann toll Dateien lesen, verarbeiten und wieder ausgeben.
Wenn allerdings exotisch kodierte Umlaute dadrin sind, macht es sie unrettbar kaputt.
*
Weil mich das nervt, habe ich convertHin geschrieben, das nimmt die Datei Byte für Byte, und wenn es
ein böses Byte >127 findet, zB
133
schreibt es in den Ausgabe-Stream:
\\133\\
*
Rückwärts sollte das auch gehen, wie wärs mit convertHer. Das nimmt genau diese Backslashgeschichten und wandelt sie zurück in 1 Byte.
1
2
2
CONVERTHIN
convertHin
import java.io.*;
// die kodierung der umlaute in dieser datei ist merkwürdig...
// also muß ich sie als stream lesen, byteweise.
// die original-datei enthaelt keine \, also kann ich die zum Absetzen der
// Umlaute nehmen.
// FALLS DIE ORIGINAL-DATEI DAS TRENNZEICHEN ENTHAELT, MUSS MAN EIN ANDERES NEHMEN!!!
class convertHin {
public static void main (String[]args) throws Exception {
FileInputStream fis = new FileInputStream ("start.csv");
FileOutputStream fos = new FileOutputStream("start-convert.csv");
byte b;
int i;
i=fis.read();
while (i>0) {
//
System.out.println ((char)i+"-"+i);
if (i>127) {
String s="\\\\"+i+"\\\\";
fos.write( s.getBytes() );
}else{
fos.write(i);
}
i=fis.read();
}
fis.close();
fos.close();
//
System.out.println ("Datei zu Ende, i="+i);
}
}
// FALLS DIE ORIGINAL-DATEI DAS TRENNZEICHEN ENTHAELT, MUSS MAN EIN ANDERES NEHMEN!!!
2
3
3
CONVERTHER
convertHer
import java.io.*;
// FALLS DIE ORIGINAL-DATEI DAS TRENNZEICHEN ENTHAELT, MUSS MAN EIN ANDERES NEHMEN!!!
class convertHer {
public static void main (String[]args) throws Exception {
FileInputStream fis = new FileInputStream ("out-convert.csv");
FileOutputStream fos = new FileOutputStream("out.csv");
byte b;
int i;
i=fis.read();
while (i>0) {
//
System.out.println ((char)i+"-"+i);
String istEsEinBackslash=""+(char)i;
if (istEsEinBackslash.equals("\\")) {
System.out.println ("Found a backslash, i="+i);
i=fis.read();
// noch ein \
System.out.println ("Found a backslash, i="+i);
i=fis.read()-48;
// hunderter
System.out.println ("Found hunderter, i="+i);
int j=i*10;
i=fis.read()-48;
// zehner
System.out.println ("Found zehner, i="+i);
j=j+i;
j=j*10;
i=fis.read()-48;
// einer
System.out.println ("Found einer, i="+i);
j+=i;
System.out.println ("Schreibe j="+j);
i=fis.read();
// noch ein \
i=fis.read();
// noch ein \
fos.write(j);
}else{
fos.write(i);
}
i=fis.read();
}
fis.close();
fos.close();
//
System.out.println ("Datei zu Ende, i="+i);
}
}
// FALLS DIE ORIGINAL-DATEI DAS TRENNZEICHEN ENTHAELT, MUSS MAN EIN ANDERES NEHMEN!!!
3
Herunterladen