如果我有一个目录,里面装满了不同的对象文件,有没有一种方法可以将它们输入到我的应用程序中,而不需要每次都打开一个新的流?我目前正在使用ObjectInputStream
,但我不介意使用另一种形式的IO。
例如,如果我将用户作为对象直接存储在硬盘上(每个用户都有自己的文件:name.user),有没有办法使用相同的流将它们全部加载回来?或者不可能看到每个单独的文件需要一个新的File
对象吗?有办法绕过这个吗?
每个文件在后台都需要自己的流;这是没有办法的。但这并不能阻止您创建自己的InputStream
,它为您管理这些内容,然后允许您从一个流中读取所有内容。
其想法是,当您尝试从CompoundObjectInputStream
或其他文件中读取时,它会查看是否还有其他文件尚未处理,并使用另一个流打开一个文件(如果有的话),然后传递数据。当它到达该目录中没有更多文件的点时,CompoundObjectInputStream
表示流的结束。
不,没有。每个物理文件都需要自己的FileInputStream
、FileChannel
或其他相应的native
访问器。
请注意,File
没有到物理文件的直接链接,它只是一个抽象路径名。