【问题标题】:Reading all object files in directory with single stream使用单个流读取目录中的所有目标文件
【发布时间】:2014-10-01 14:30:04
【问题描述】:

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

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

【问题讨论】:

  • 什么是“目标文件”(考虑到您愿意不使用 ObjectInputStream)
  • @aioobe 我硬盘上文件形式的序列化对象

标签: java file object io stream


【解决方案1】:

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

我们的想法是,当您尝试从 CompoundObjectInputStream 或其他内容中读取数据时,它会查看是否还有尚未处理的文件,如果有,则使用另一个流打开一个文件,然后通过数据通过。当它到达该目录中没有更多文件的点时,CompoundObjectInputStream 表示流结束。

【讨论】:

  • 这正是我所做的,尽管我希望有一种方法只需要一个流。我想我现在必须坚持使用“主”流。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 2014-11-10
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多