Ich weiß, dass skip(long)
Methode FileInputStream
Bytes von der Startposition der Datei überspringt und den Dateizeiger platziert. Aber wenn wir nur 20 Zeichen in der Mitte der Datei überspringen wollen, und den restlichen Teil der Datei als gelesen, was sollten wir tun?Skip() - Methode in IO Java?
Antwort
Sie sollten eine BufferedReader
verwenden. Seine skip
Methode überspringt Zeichen und nicht Bytes.
Um 20
Zeichen aus einem vorhandenen FileInputStream
überspringen:
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
// read what you want here
reader.skip(20);
// read the rest of the file after skipping
Waooo, interessant –
@QuanNguyen - Denken Sie daran, dass * Streams an Bytes arbeiten, Leser/Schreiber an Zeichen arbeiten * – TheLostMind
Bedenken Sie, dass selbst 'BufferedReader.skip()' nicht unbedingt genau das tut, was Sie wollen Sie haben Zeichen außerhalb des [BMP] (https://en.wikipedia.org/wiki/Plane_ (Unicode) #Basic_Multicular_Plane). – Phylogenesis
einen Zähler mantain.
Schleifen Sie alle Zeichen, um den Zähler für jeden Lesevorgang zu erhöhen. Wenn Sie das Zählerlimit erreichen, das dem Beginn der zu überspringenden Zeichen entspricht, überspringen Sie die Zeichen, die Sie überspringen müssen.
int counter = 0;
while (counter < START_SKIP) {
int x = input.read();
// Do something
}
input.skip(NUM_CHARS_TO_SKIP);
...
// Continue reading the remainings chars
Bei Bedarf ist ein BufferedReader
Leistungen zu verbessern, wie Tunaki sagte (oder BufferedInputStream
je nach Art der Datei, die Sie lesen, wenn Binär- oder Textdatei).
Überspringen funktioniert von der aktuellen Dateiposition. Verwenden Sie für Text einen Leser (InputStreamReader überbrückt binäre Bytes in Unicode-Java-Text). Verwenden Sie für die Pufferung eine Buffered ~ Version. –