Wiem, że metoda skip(long)
przeskakuje z początkowej pozycji pliku i umieszcza wskaźnik pliku. Ale jeśli chcemy pominąć tylko 20 znaków w środku pliku i pozostałą część pliku do odczytania, co powinniśmy zrobić?Metoda pomijania() w IO java?
Odpowiedz
Powinieneś użyć BufferedReader
. Metoda skip
pomija znaki, a nie bajty.
Aby pominąć 20
znaki z istniejącej FileInputStream
:
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
// read what you want here
reader.skip(20);
// read the rest of the file after skipping
Waooo, interesting –
@QuanNguyen - Jako regułę kciuka pamiętaj, że * Strumienie działają na bajty, czytniki/pisarze działają na znakach * – TheLostMind
Pamiętaj, że nawet 'BufferedReader.skip()' niekoniecznie musi robić dokładnie to, co chcesz, jeśli masz postacie spoza [BMP] (https://en.wikipedia.org/wiki/Plane_ (Unicode) #Basic_Multilingual_Plane). – Phylogenesis
mantain licznika.
Pętla wszystkich znaków zwiększających licznik dla każdego odczytu. Kiedy osiągniesz limit licznika odpowiadający początkowi znaków, które chcesz pominąć, pomiń znaki, które chcesz pominąć.
int counter = 0;
while (counter < START_SKIP) {
int x = input.read();
// Do something
}
input.skip(NUM_CHARS_TO_SKIP);
...
// Continue reading the remainings chars
razie potrzeby użyć BufferedReader
poprawić występy jako Tunaki powiedział (lub BufferedInputStream
w zależności od typu pliku czytasz, jeśli plik binarny lub tekst).
'Pomiń' działa z aktualnej pozycji pliku. Do tekstu użyj czytnika (InputStreamReader łączy bajty binarne z tekstem Java w Unicode). Do buforowania użyj wersji Buffered ~. –