Hallo,
Folgende Classe behandelt eine csv Datei die mittels FileInputStream an den Konstrukter übergeben wird.
Der Aufruf funktioniert z.B. mit
Die csv-datei test.csv sieht z.b. so aus
z1c1,z1c2,z1c3
z2c1,z2c2,z2c3
z3c1,z3c2,z3c3
Wie man sieht wird in readChunk solange gelesen bis entweder das seperator-zeichen kommt (,), das Zeilenende('\n') oder das EOF (65535), und das funktioniert auch so.
Normalerweise sollte das EOF jedoch mit -1 definiert sein (java-documentation/FileInputStream.read)
und schöner wäre es auch mit Konstante. Hat jemand eine Erklärung dafür?
Folgende Classe behandelt eine csv Datei die mittels FileInputStream an den Konstrukter übergeben wird.
Java:
import java.io.*;
public class CSVInputStream
extends FilterInputStream {
public CSVInputStream(InputStream in) {
super(in);
}
public String readChunk(char s) throws IOException {
StringBuilder sb = new StringBuilder();
char c = (char)read();
while((c!='\n')&&(c!=s)&&(c!=65535)) {
sb.append(c);
c = (char)read();
}
return sb.toString();
}
}
Java:
CSVInputStream csvIS = new CSVInputStream (new FileInputStream("test.csv"));
csvIS.readChunk(',');
Die csv-datei test.csv sieht z.b. so aus
z1c1,z1c2,z1c3
z2c1,z2c2,z2c3
z3c1,z3c2,z3c3
Wie man sieht wird in readChunk solange gelesen bis entweder das seperator-zeichen kommt (,), das Zeilenende('\n') oder das EOF (65535), und das funktioniert auch so.
Normalerweise sollte das EOF jedoch mit -1 definiert sein (java-documentation/FileInputStream.read)
und schöner wäre es auch mit Konstante. Hat jemand eine Erklärung dafür?