ich habe ein kleines Programm (über BufferedInputStream) welches mir alle Zeilen einer Textdatei ausliest.
ich habe es mit .trim(4) auch geschafft das er mir die ersten 4 "unnötigen" Zeichen nicht mit ausliest.
Aber wie kann ich ab einer bestimmten Stelle oder besser noch sobald die erstel Leerzeichen beginnen abschneiden?
Lies dir mal die Methoden durch, die String (String (Java 2 Platform SE v1.4.2))dir bereitstellt... v.a. bei substring() und indexOf() würde ich speziell nachschauen, damit lässt sich bestimmt was machen...
aber in meinem Fall habe ich probiert für bis. gibt es kein substring....
Java:
try{
fis =newFileInputStream(file);// Here BufferedInputStream is added for fast reading.
bis =newBufferedInputStream(fis);
dis =newDataInputStream(bis);// dis.available() returns 0 if the file does not have more lines.while(dis.available()!=0){
bis.skip(4);// lässt die ersten 4 Stellen in jeder zeile aus!!System.out.println(dis.readLine());}
EDIT: Du sollst ja über deinen BIS auch erstmal eine Zeile einlesen und die dann auseinandner nehmen... auf der Input-Ebene kannst du nicht rumschnippeln...
Ja, erstmal die Position des Leerzeichens ermitteln. Dafür gibt es auch eine String-Funktion. Sie heißt indexOf(). Dann diesen Wert für substring benutzen.
Ich glaube nicht, dass "er" in deinem Fall mit dem 10. Leerzeichen abschneidet. Substring macht nichts anderes, als die Teilzeichenkette zwischen zwei char-Positionen zurückzugeben, das sind nicht notwendigerweise Leerzeuchen... (in deinem Fall dürfte das für die erste Zeichenkette das Zeichen "1" sein, wenn ich richtig gezählt hab).
importjava.io.*;publicclassTest{publicstaticvoidmain(String[] args){Test test =newTest();System.out.println(test.zerschnippel("Hallo mein Name ist Fabian."));System.out.println(test.zerschnippel("Das ist ein blaues Haus."));}publicStringzerschnippel(String param){return param.substring(param.indexOf(' ')+1,param.length());// +1 damit die Leerzeichen auch weggeschnitten werden.}}
alles vor dem ersten Leerzeichen und das Leerzeichen werden weggeschnitten.
Der Umgang mit den InputStreams ist unbrauchbar. Von hier kopiert? (Wie kann das nur so positiv bewertet worden sein?)
[japi]java.io.DataInputStream#readLine()[/japi] ist deprecated.
Ein Zeichen kann aus mehreren Bytes bestehen. Das ist ein Grund, wieso die Verwendung von [japi]java.io.BufferedInputStream#skip(long)[/japi] nicht korrekt ist. Der andere lässt sich der Doku leicht entnehmen: Es werden nicht zwingend so viele Bytes übersprungen wie mitgegeben.
Zum Lesen von textuellen Daten nimmt man einen [japi]java.io.Reader[/japi].
Die Streams werden nicht korrekt geschlossen. [japi]java.io.InputStream#close()[/japi] gehört in einen finally-Block.