使用单个流读取目录中的所有目标文件

时间:2014-10-01 14:30:05

标签: java file object io stream

如果我的目录中填充了不同的目标文件,有没有一种方法可以将它们输入到我的应用程序中,而无需每次都打开新的流?我目前正在使用ObjectInputStream,但我不介意使用其他形式的IO。

例如,如果我将我的用户直接存储到我的硬盘驱动器上作为对象(每个都有自己的文件: name.user ),有没有办法可以将它们全部加载到使用相同的文件中流?或者不可能看到每个文件需要一个新的File对象?有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

每个文件都需要在幕后拥有自己的流;没有办法解决这个问题。但这并不能阻止您为自己创建自己的InputStream,然后允许您从一个流中读取所有内容。

当您尝试从CompoundObjectInputStream或其他任何内容中读取内容时,它会查看是否还有其他文件尚未处理,如果是这样,则使用其他文件打开流,并传递数据。当它到达该目录中没有更多文件的位置时,CompoundObjectInputStream表示流结束。

答案 1 :(得分:1)

不,没有。每个物理文件都需要自己的FileInputStreamFileChannel或其他相应的native访问者。

请注意,File没有直接链接到物理文件,它只是一个抽象路径名。