我需要编写一个函数,它接受某种输入流的东西(例如一个InputStream或一个FileChannel),以便在两次传递中读取一个大文件:一次预先计算一些容量,二次做"真正的"工作.我不希望一次将整个文件加载到内存中(除非它很小).
是否有适当的Java类提供此功能?FileInputStream本身不支持mark()/ reset().我认为BufferedInputStream确实如此,但我不清楚它是否必须存储整个文件来执行此操作.
C很简单,你只需使用fseek(),ftell()和rewind().:-(