2014-10-01 78 views
0

如果我有一個目錄充滿不同的目標文件,有沒有一種方法可以輸入到我的應用程序,而無需每次打開一個新的流?我目前使用ObjectInputStream,但我不介意使用另一種形式的IO。例如,如果我將我的用戶作爲對象(每個對象具有自己的文件:name.user)直接存儲到我的硬盤驅動器中,是否可以使用相同的流將它們全部加載回來?或者不可能看到每個文件需要一個新的File對象嗎?有沒有解決的辦法?讀取目錄中的所有目標文件與單個流

+0

什麼是「目標文件」(考慮到您打算不使用ObjectInputStream) – aioobe 2014-10-01 14:34:04

+0

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

回答

2

每個文件在幕後都需要自己的流;這是沒有辦法的。但是這並不能阻止你創建自己的InputStream爲你管理它,然後允許你從一個流中讀取所有的東西。

這個想法是,當你試圖從你的CompoundObjectInputStream或其他東西讀取時,它會查看是否還有更多的文件尚未處理,如果有的話使用另一個流打開,然後通過數據通過。當到達該目錄中沒有更多文件的位置時,CompoundObjectInputStream指示流結束。

+0

這正是我所做的,雖然我希望會有一種只需要一個流的方法。我想我現在必須堅持一個「主」流。 – 2014-10-01 14:49:12

1

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

請注意,File沒有直接鏈接到物理文件,它只是一個抽象路徑名。

相關問題