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

问题描述:

如果我有一个目录充满不同的目标文件,有没有一种方法可以输入到我的应用程序,而无需每次打开一个新的流?我目前使用ObjectInputStream,但我不介意使用另一种形式的IO。例如,如果我将我的用户作为对象(每个对象具有自己的文件:name.user)直接存储到我的硬盘驱动器中,是否可以使用相同的流将它们全部加载回来?或者不可能看到每个文件需要一个新的File对象吗?有没有解决的办法?读取目录中的所有目标文件与单个流

+0

什么是“目标文件”(考虑到您打算不使用ObjectInputStream) – aioobe 2014-10-01 14:34:04

+0

@aioobe在我的硬盘上以文件形式存在的序列化对象 – 2014-10-01 14:34:43

每个文件在幕后都需要自己的流;这是没有办法的。但是这并不能阻止你创建自己的InputStream为你管理它,然后允许你从一个流中读取所有的东西。

这个想法是,当你试图从你的CompoundObjectInputStream或其他东西读取时,它会查看是否还有更多的文件尚未处理,如果有的话使用另一个流打开,然后通过数据通过。当到达该目录中没有更多文件的位置时,CompoundObjectInputStream指示流结束。

+0

这正是我所做的,虽然我希望会有一种只需要一个流的方法。我想我现在必须坚持一个“主”流。 – 2014-10-01 14:49:12

不,没有。每个物理文件都需要它自己的FileInputStream,FileChannel或其他相应的存取器。

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