2011-10-05 52 views

回答

4

這可能會很棘手。您可以先使用探查器,如VisualVM(免費)或YourKit(不免費)檢查java.io.File內存中的對象。如果你能找到你感興趣的路徑,那可能會指向你正確的方向。問題是File對象不一定必須存在才能讓應用程序繼續打開文件。

您的下一步可能是在FileInputStreamFileOutputStream中設置斷點(除非您知道文件是正在讀取還是寫入),附加一個調試器並監視您的文件是否被其中一個打開。但是,當然,還有其他打開文件的方式。例如,您可能還需要放樣Class.getResourceAsStream()URL.openConnection()

你最後的手段可能是嘗試一個無所不知的調試器,如ODBTOD。我只有有限的經驗,但他們聲稱「知道一切」。你只需要弄清楚如何提出正確的問題。

+0

這是路徑ID選擇調查 - 我沒有時間這樣做,因爲工作的優先事項,但是我把它標記爲正確的 –

0

使用AspectJ並攔截調用各種風格的開放文件流。使用周圍的方面。請注意,這隻能告訴你哪個對象打開了流,但顯然對象可以繞過對流的引用,所以...

+0

-1至少在我看來,這是一個調試問題,而不是設計問題。 –

+0

方面是陳述性的.. – alphazero

相關問題