Hallo Zusammen,
ich möchte gerne einen speziellen gepufferten Reader schreiben. Meiner sieht atm so aus:
readElement() soll genau eine Zeile lesen, wenn die Zeile mit # beginnt. Ansonsten soll er solange lesen, bis
kommt.
Das funktioniert auch aber für mein Verständnis ist letzteres nicht gepuffert, oder? Wie schreibe ich das am besten mit einem Buffer?
ich möchte gerne einen speziellen gepufferten Reader schreiben. Meiner sieht atm so aus:
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class TestReader {
private BufferedReader bf;
private char qualifier;
public TestReader(File file) throws FileNotFoundException {
this.bf = new BufferedReader(new FileReader(file));
this.qualifier = '"';
}
public String readElement() throws IOException {
int i = bf.read();
if (i != -1) {
char c = (char)i;
if (c == '#') return c + bf.readLine();
boolean entityEnd = false;
boolean qualified = c == qualifier;
StringBuffer sb = new StringBuffer();
sb.append(c);
while (!entityEnd && (i = bf.read()) != -1) {
c = (char)i;
if (c == '\r' && !qualified) continue;
if (c == '\n' && !qualified) entityEnd = true;
else {
if (c == qualifier) qualified = !qualified;
sb.append(c);
}
}
return sb.toString();
}
return null;
}
public void close() throws IOException {
bf.close();
}
readElement() soll genau eine Zeile lesen, wenn die Zeile mit # beginnt. Ansonsten soll er solange lesen, bis
Code:
"\r?\n
Das funktioniert auch aber für mein Verständnis ist letzteres nicht gepuffert, oder? Wie schreibe ich das am besten mit einem Buffer?