Я преобразую наше приложение от использования внешних файлов (доступ с помощью имен файлов) к внутренним (доступ с использованием объектов FileInputStream
и FileOutputStream
).Тем не менее, я получаю довольно странную ошибку: на finalize()
, FileInputStream
s иногда выдают 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 на docjar.com кажется вероятным, что это может быть вызвано нулем FileDescriptor
;тем не менее, я хочу иметь возможность передавать неверные имена файлов моим конструкторам FileInputStream
и ловить FileNotFoundException
, поскольку это все, что я могу сделать с внутренней системой Android (если не считать измерения имени файла для каждой записи в Context#fileList()
).Есть ли способ обойти эту проблему?
Примечание: очевидно, что исключение в финализаторе не вызывает у меня реальных сбоев, но я чувствую, что должен попытаться привести в порядок это.