Мне нужно написать функцию, которая принимает какую-то информацию о потоке ввода (например, InputStream или FileChannel), чтобы прочитать большой файл за два прохода: один раз чтобы прекомпомировать некоторые возможности, а во-вторых, выполнить «настоящую» работу. Я не хочу, чтобы весь файл загружался в память сразу (если только он не мал).java file input с возможностью перемотки назад()/reset()
Есть ли соответствующий Java-класс, который предоставляет эту возможность? FileInputStream сам по себе не поддерживает mark()/reset(). BufferedInputStream, я думаю, но я не знаю, нужно ли хранить весь файл для этого.
C так просто, вы просто используете fseek(), ftell() и перематываете(). :-(
Джейсон, пожалуйста, снимите принять мой ответ и принять [это.] (Http://stackoverflow.com/a/18665678/3474) Это хорошо, потому что это обеспечивает эффективную реализацию стандартного стандартного API-интерфейса InputStream; любой потребитель 'InputStream' может использовать его без загрузки всего файла. – erickson