输入尝试读取java文件失败
你能帮我解决这个问题吗 我正在开发一个android应用程序,我需要一个可以从类中读取的文件。其代码如下:输入尝试读取java文件失败,java,Java,你能帮我解决这个问题吗 我正在开发一个android应用程序,我需要一个可以从类中读取的文件。其代码如下: FileInputStream fis = null; String collected = null; try { fis = openFileInput(title); Log.d("FileP
FileInputStream fis = null;
String collected = null;
try {
fis = openFileInput(title);
Log.d("FilePATH", path + "/" + title);
byte[] dataArray = new byte[fis.available()];
while(fis.read(dataArray) != -1){
collected = new String(dataArray);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close();
textData.setText(collected);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
它无法进入try,然后在fis.close()处引发异常。
我能做些什么来解决这个问题
堆栈跟踪
03-17 10:59:12.888: E/AndroidRuntime(15142): FATAL EXCEPTION: main
03-17 10:59:12.888: E/AndroidRuntime(15142): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.victwo/com.example.victwo.NewNoteActivity}: java.lang.NullPointerException
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.os.Looper.loop(Looper.java:123)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-17 10:59:12.888: E/AndroidRuntime(15142): at java.lang.reflect.Method.invokeNative(Native Method)
03-17 10:59:12.888: E/AndroidRuntime(15142): at java.lang.reflect.Method.invoke(Method.java:507)
03-17 10:59:12.888: E/AndroidRuntime(15142): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-17 10:59:12.888: E/AndroidRuntime(15142): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-17 10:59:12.888: E/AndroidRuntime(15142): at dalvik.system.NativeStart.main(Native Method)
03-17 10:59:12.888: E/AndroidRuntime(15142): Caused by: java.lang.NullPointerException
03-17 10:59:12.888: E/AndroidRuntime(15142): at com.example.victwo.NewNoteActivity.onCreate(NewNoteActivity.java:66)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-17 10:59:12.888: E/AndroidRuntime(15142): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-17 10:59:12.888: E/AndroidRuntime(15142): ... 11 more
第一个异常(内部尝试)
只显示代码,它不会无法进入try,它可能会在发生任何事情之前在try中抛出异常,即
fis=openFileInput(title)代码>
可能是抛出一个,然后跳入捕捉
然后是最后
第二个异常(最终内部)
finally you see中的异常是由fis
为null
引起的,在尝试对其执行操作之前,只需对其进行null检查
if (fis != null)
{
fis.close();
}
这是因为close()
另外
如果您使用的是Java7,我建议您放弃finally,使用try with resources,这样您就不需要处理它导致的关闭和异常
try (FileInputStream fis = openFileInput(title))
{
//your code and catches
}
//no finally block required
然后再设置文本
textData.setText(collected);
可以发布stacktrace吗?fis.close()可能会失败,因为无法初始化fis,因此fis为空。关闭前只需检查null。@AskThakare如何知道openFileInput(title)
还没有这样做吗?我们看不到日志,openFileInput
按照您的建议在Java 6上运行。我可以在那里做什么?我已经更新了我的答案,你也可以添加堆栈跟踪吗?我猜newnoteivity
中的第66行是fis=openFileInput