回答
這可能會很棘手。您可以先使用探查器,如VisualVM(免費)或YourKit(不免費)檢查java.io.File內存中的對象。如果你能找到你感興趣的路徑,那可能會指向你正確的方向。問題是File對象不一定必須存在才能讓應用程序繼續打開文件。
您的下一步可能是在FileInputStream和FileOutputStream中設置斷點(除非您知道文件是正在讀取還是寫入),附加一個調試器並監視您的文件是否被其中一個打開。但是,當然,還有其他打開文件的方式。例如,您可能還需要放樣Class.getResourceAsStream()和URL.openConnection()。
你最後的手段可能是嘗試一個無所不知的調試器,如ODB或TOD。我只有有限的經驗,但他們聲稱「知道一切」。你只需要弄清楚如何提出正確的問題。
使用AspectJ並攔截調用各種風格的開放文件流。使用周圍的方面。請注意,這隻能告訴你哪個對象打開了流,但顯然對象可以繞過對流的引用,所以...
-1至少在我看來,這是一個調試問題,而不是設計問題。 –
方面是陳述性的.. – alphazero
- 1. 如何找出哪一行代碼正在打開文件?
- 2. Java - 你如何找出哪個類文件有一個損壞的常量池?
- 3. 在哪裏把PrintStream對象打印出一個變量java
- 4. 如何在java中的另一個目錄中打開文件?
- 5. 如何打印出一個數組中的對象(Java)
- 6. python:打開兩個文件作爲一個文件對象
- 7. 如何測試一個文件是否在Java中打開?
- 8. 如何在java中打開一個exe文件
- 9. 我如何找到哪個磚在glusterFS上有一個文件
- 10. 如何用Java中的運行時對象打開多個文件?
- 11. 如何確定哪個JavaScript文件打開彈出窗口
- 12. 從java中的一個網站打開一個文件
- 13. 如何找到哪個對象id在javascript中導致事件
- 14. 如何找出應用程序打開了哪些文件?
- 15. Java - 如何找出導入來自哪個Jar文件?
- 16. 如何找出一個分支中的所有簽出文件
- 17. 如何知道在c#中打開對話框中選擇了哪個文件
- 18. 如何讓html打開一個lua文件或打開一個exe文件?
- 19. 如何從一個對象在java中
- 20. Java保存/打開文件對象
- 21. 如何找到代碼對象來自哪個文件?
- 22. 如何找出哪個進程正在使用Java中的文件?
- 23. 如何找到哪個pip包擁有一個文件?
- 24. 在Java中有一個公開的對象處理的時間
- 25. inotify - 如何找出哪個用戶有修改過的文件?
- 26. 如何隱藏JPanel並在其他Java文件中打開另一個文件?
- 27. 在正在運行的java jar中打開一個文件
- 28. 如何查找第一個文件中的哪一行最常出現在第二個文件中?
- 29. 如何從Java中的stringbuilder對象創建一個utf8文件
- 30. 如何打開一個.apk文件
這是路徑ID選擇調查 - 我沒有時間這樣做,因爲工作的優先事項,但是我把它標記爲正確的 –