Мне нужно написать функцию, которая принимает какой-то элемент потока ввода (например, InputStream или FileChannel), чтобы прочитать большой файл за два прохода: один раз для прекомпопуляции некоторых возможностей, а второй для выполнения "реальных" " Работа. Я не хочу, чтобы весь файл загружался в память сразу (если только он не мал).
Есть ли подходящий Java-класс, который предоставляет эту возможность? FileInputStream сам по себе не поддерживает mark()/reset(). BufferedInputStream делает, я думаю, но я не знаю, нужно ли хранить весь файл для этого.
C так просто, вы просто используете fseek(), ftell() и rewind().: - (