RandomAccessFile

Status
Nicht offen für weitere Antworten.

KalleM

Aktives Mitglied
Hallo,
hoffe, es nimmt sich jemand die Zeit über mein Code zu gucken. Muss eine Klasse schreiben, die aus einer Datei Bytes liest und und diese nach Umlauten durchsucht. Wenn ein Umlaut gefunden wurde, soll dieser durch entsprechende Zeichenfolgen ersetzt werden. Die eingelesenen Daten, inklusive Änderungen, sollen dann in eine neue Datei geschrieben werden.
Soweit klappt alles, jetzt würde ich gern wissen, ob die Struktur soweit in Ordnung ist, oder wie ich das Programm optimieren kann?

[highlight=Java] public class HTMLconv{

//Variablen
private static String pfad = "datei1702_vor.html";
private static String pfad_1 = "datei1702_nach.html";
private static int byteAufnahme;
public static int counter;


public static void main(String[] args) throws IOException{

RandomAccessFile raf_1 = new RandomAccessFile(pfad_1, "rw");
RandomAccessFile raf = new RandomAccessFile(pfad, "r");

//Hier wird der counter so lange erhöht, bis das Textende erreicht ist
while(counter < raf.length()){
//Mit raf.seek() wird an der ersten Stelle im Text begonnen
raf.seek(counter);
String zeichen = "";
//Hier wird Byte für Byte eingelesen
byteAufnahme = raf.read();
zeichen += (char)byteAufnahme;

if(zeichen .equals("ä"))
zeichen ="&auml;";
if(zeichen .equals("Ä"))
zeichen ="&Auml;";
if(zeichen .equals("ö"))
zeichen ="&ouml;";
if(zeichen .equals("Ö"))
zeichen ="&Ouml;";
if(zeichen .equals("ü"))
zeichen ="&uuml;";
if(zeichen .equals("Ü"))
zeichen ="&Uuml;";
if(zeichen .equals("ß"))
zeichen ="&szlig;";

System.out.print("" +zeichen );
raf_1.writeBytes(zeichen );

counter++;
}

}

}[/highlight]
 

Ark

Top Contributor
Skizzenhaft und ungetestet, sollte deutlich schneller sein:
[HIGHLIGHT="Java"]int[] srcExpr=new int[]{'ä', 'ö', 'ü', 'ß'};
String[] replcmnt=new String[]{"&auml;", "&ouml;", "&uuml;", "&szlig;"};

BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(pfad))));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(pfad_1))));

int c;
LOOP:
while((c=br.read())>=0){
for(int i=0;i<srcExpr.length();i++){
if(c==srcExpr){
bw.write(replcmnt);
continue LOOP;
}
}
bw.write((char)c);
}
bw.flush();
bw.close();
br.close();[/HIGHLIGHT]
Ark
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Scheller geht Arks Version allemal. Beide Versionen missachten aber die Winzigkeit, das Sonderzeichen auf 8-Bit reduziert in der Tabelle nicht immer an der selben Stelle liegen müssen (z.B. "Ä" -> 0xC4 Unicode und 0x8E DOS/Westlich). Richtig "fies" wirds, wenn die Quelldatei UTF-X encodiert ist. Wie? Für die Aufgabe nicht Wichtig? Naja... mein' ja nur.
@Edit: Und wenn doch wichtig, würd' ich mir mal "StreamTokenizer" ansehen.
 
Zuletzt bearbeitet von einem Moderator:

Ark

Top Contributor
Ich denke schon, dass meine Variante Unicode-konform ist: Für den Fall, dass ein bestimmter Zeichensatz vorliegt, braucht man nur diesen im InputStreamReader respektive OutputStreamWriter als zusätzlichen Parameter anzugeben. Da intern sowieso nur Unicode zum Einsatz kommt, sollte dies dann auch reichen. ;)

Ark
 
S

Spacerat

Gast
Jupp... Hast recht... Hatte nur "read()" im Auge. Das liest ja gewohnheitsmässig Bytes. Ist bei Readern natürlich anders.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
N Randomaccessfile Java Basics - Anfänger-Themen 2
G Wie gebe ich einen Dateipfad in RandomAccessFile an? Java Basics - Anfänger-Themen 2
S TextArea, RandomAccessFile, Apend und andere Tricks... Java Basics - Anfänger-Themen 7
R RandomAccessFile verständnis Problem Java Basics - Anfänger-Themen 10
D RandomAccessFile Java Basics - Anfänger-Themen 2
P RandomAccessFile writeInt() und writeChar() Java Basics - Anfänger-Themen 3
L RandomAccessFile liest nicht alle Zeichen Java Basics - Anfänger-Themen 3
D Erste Schritte RandomAccessFile "Leerzeichen" löschen Java Basics - Anfänger-Themen 6
F Kann RandomAccessFile Zip Datei lesen? Java Basics - Anfänger-Themen 14
B Klassen RandomAccessFile Java Basics - Anfänger-Themen 7
B Collections RandomAccessfile & Linkedlist Java Basics - Anfänger-Themen 4
M Frage zur Klasse RandomAccessFile Java Basics - Anfänger-Themen 8
cosmic Frage zu der RandomAccessFile Klasse Java Basics - Anfänger-Themen 6
T RandomAccessFile - Wie schreibe ich etwas in eine txt Datei? Java Basics - Anfänger-Themen 5
C RandomAccessFile vs. Streams Java Basics - Anfänger-Themen 5
D text dateien mit RandomAccessFile manipulieren Java Basics - Anfänger-Themen 6
T RandomAccessFile und der Dateipfad Java Basics - Anfänger-Themen 2
J RandomAccessFile löschen Java Basics - Anfänger-Themen 2
M RandomAccessFile Java Basics - Anfänger-Themen 3
G RandomAccessFile, FileChannel, MappedByteBuffer Java Basics - Anfänger-Themen 12
P Datei mit RandomAccessFile einlesen Java Basics - Anfänger-Themen 14
M RandomAccessFile schreibt Sonderzeichen vor String Java Basics - Anfänger-Themen 2
R RandomAccessFile mit anderen Streams verbinden Java Basics - Anfänger-Themen 5
J File, RandomAccessFile File wird größer Java Basics - Anfänger-Themen 8
J RandomAccessFile schreibt falsch Java Basics - Anfänger-Themen 2
G RandomAccessFile Java Basics - Anfänger-Themen 20
R RandomAccessFile Java Basics - Anfänger-Themen 4
R RandomAccessFile und ObjectoutputStream Java Basics - Anfänger-Themen 2
T RandomAccessFile erzeugt seltsame Zeichen Java Basics - Anfänger-Themen 2
P RandomAccessFile Java Basics - Anfänger-Themen 2
L RandomAccessFile und readChar readByte Java Basics - Anfänger-Themen 2
D konvertierungsprobleme bei RandomAccessFile Java Basics - Anfänger-Themen 4
L RandomAccessFile - Prob Java Basics - Anfänger-Themen 4
N RandomAccessFile(File, String) erstellt datei?! Java Basics - Anfänger-Themen 6
B RandomAccessFile Java Basics - Anfänger-Themen 12
M RandomAccessFile liest nur jeden zweiten Wert aus! Java Basics - Anfänger-Themen 8
G RandomAccessFile Java Basics - Anfänger-Themen 2
O RandomAccessFile komisch zeichen Java Basics - Anfänger-Themen 7
A RandomAccessFile Java Basics - Anfänger-Themen 7
B String in ein RandomAccessFile einfügen (bestimmte Position) Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben