在java中读取输入流

我在java中读取输入流。一旦在输入流中到达文件末尾,流就会关闭,我无法再次使用相同的流。有没有办法让流保持打开,直到我在同一个流上进行进一步处理。     
已邀请:
不应仅仅因为您阅读到它的结尾而自动关闭流。您应该可以在开始时使用
mark()
,然后拨打
reset()
以返回到标记。但是,它取决于流是否支持。 如果您使用的是文件,则可能需要考虑使用
RandomAccessFile
。如果它是来自网络的流,可能没有“倒带”它的概念 - 在这种情况下,您应该首先读取所有数据并将其复制到
ByteArrayOutputStream
:然后您可以将其转换为字节数组并创建为很多
ByteArrayInputStream
s,你想要相同的数据支持。     
遇到流末尾时,流不会自动关闭。顺便说一句,我不知道为什么你要保持流打开,如果到达流的末尾。如果您计划从流中读取两次(由于某些奇怪的原因,在同一个流上进行两次迭代),您可以关闭第一个并在可能的情况下打开第二个(对于文件流来说足够简单)。另一种方法是读取整个数据并处理数据,以防您处理的数据不是太大(再次取决于您的应用程序特定需求)。     

要回复问题请先登录注册