我正在將我們的應用程序從使用外部文件(使用文件名訪問)轉換爲內部文件(使用FileInputStream
和FileOutputStream
對象訪問)。但是,我收到了一個相當奇怪的錯誤:在finalize()
上,FileInputStream
有時投擲NullPointerException
。在Android的FileInputStream的finalize()期間導致NullPointerException的原因是什麼?
logcat的告訴我:
Uncaught exception thrown by finalizer (will be discarded):
java.lang.NullPointerException:
at java.io.FileInputStream.close(FileInputStream.java:133)
at java.io.FileInputStream.finalize(FileInputStream.java:156)
at dalvik.system.NativeStart.run(Native Method)
望着FileInputStream source on docjar.com似乎有可能,這可能是一個空FileDescriptor
原因;不過,我希望能夠將錯誤文件名傳遞給我的FileInputStream
構造函數,並捕獲FileNotFoundException
,因爲這是我可以使用Android內部系統完成的工作(對Context#fileList()
中的每個條目測量文件名的次數很少)。有沒有辦法解決這個問題?
注意一個終結器中的異常並不會導致任何實際的崩潰,但我覺得我應該嘗試整理它。
我打電話'close()' - 這似乎一直髮生在流不正確初始化時。但是,這不僅僅是將NPE轉移到我稱之爲'close()'的方法嗎?也感謝關於文件存在的提示:) –