2011-05-27 60 views
0

我有一個類,我無法修改,並且此類包含一個需要java.io.File的構造函數。我已經從不同的來源加載信息,目前它在內存中。所以我想知道是否有一種方法來模擬java.io.File對象,這種方式使用已經存在於內存中的信息。我知道我可以先將內存中的信息存儲到磁盤,但我不喜歡這一步。在構造函數中嘲諷File對象參數以使用inputstream

對此有何看法?

回答

0

A File對象不包含文件的數據,它或多或少是一個僅通過名稱(路徑)描述文件或文件夾的類。

File不是最終的,所以你可以擴展它並提供一個自定義的實現 - 但這並沒有幫助,因爲與Sockets不同,File實例無法返回輸入或輸出流。 A File由讀取器,寫入器或流類使用來獲得文件通過基於磁盤的IO讀取/寫入數據的路徑。所以嘲笑File將無濟於事。

您必須將輸入流傳遞給另一個提供內存源數據的類。只有機會看看API,或者第二個想法:檢查你是否可以用反射做點什麼。也許你很幸運,班上有一個inputstream字段,也許你很幸運,只需設置你自己的自定義inputstream實例即可。