Java Android:读取txt文件时出现NullPointerException

Java Android:读取txt文件时出现NullPointerException,java,android,file,nullpointerexception,bufferedreader,Java,Android,File,Nullpointerexception,Bufferedreader,我正在尝试为Android编写一个翻译应用程序,并希望读取一个txt文件。 但是,通过尝试读取文件,我总是会得到一个NullpointerException。 我已将txt文件放入资产文件夹,但我认为应用程序找不到它:( 我的代码: (这是第160行中我的班级VocabTrainer的代码: (vocsE、vocsG是链接列表,vocMapE、vocMapG是作为VocabTrainer字段的HasMaps)) 这是logcat跟踪: 04-18 17:24:27.204: E/AndroidR

我正在尝试为Android编写一个翻译应用程序,并希望读取一个txt文件。 但是,通过尝试读取文件,我总是会得到一个NullpointerException。 我已将txt文件放入资产文件夹,但我认为应用程序找不到它:( 我的代码:

(这是第160行中我的班级VocabTrainer的代码: (vocsE、vocsG是链接列表,vocMapE、vocMapG是作为VocabTrainer字段的HasMaps))

这是logcat跟踪:

04-18 17:24:27.204: E/AndroidRuntime(1736): java.lang.RuntimeException: Unable to    
instantiate activity  
ComponentInfo{de.dbgeppelheim.dbgvocab/de.dbgeppelheim.dbgvocab.TrainingActivity}: 
java.lang.NullPointerException
04-18 17:24:27.204: E/AndroidRuntime(1736):     at  
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.ActivityThread.access$600(ActivityThread.java:141)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at    
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.os.Handler.dispatchMessage(Handler.java:99)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.os.Looper.loop(Looper.java:137)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at    
android.app.ActivityThread.main(ActivityThread.java:5039)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
java.lang.reflect.Method.invokeNative(Native Method)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at  
java.lang.reflect.Method.invoke(Method.java:511)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at    
dalvik.system.NativeStart.main(Native Method)
04-18 17:24:27.204: E/AndroidRuntime(1736): Caused by: java.lang.NullPointerException
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.content.ContextWrapper.getResources(ContextWrapper.java:89)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
de.dbgeppelheim.functionality.VocabTrainer.initialise(VocabTrainer.java:167)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
de.dbgeppelheim.functionality.VocabTrainer.<init>(VocabTrainer.java:40)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
de.dbgeppelheim.dbgvocab.TrainingActivity.<init>(TrainingActivity.java:25)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at  
java.lang.Class.newInstanceImpl(Native Method)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
java.lang.Class.newInstance(Class.java:1319)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.Instrumentation.newActivity(Instrumentation.java:1054)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
04-18 17:24:27.204: E/AndroidRuntime(1736):     ... 11 more
04-18 17:24:27.204:E/AndroidRuntime(1736):java.lang.RuntimeException:无法
实例化活动
组件信息{de.dbgeppelheim.dbgvucab/de.dbgeppelheim.dbgvucab.TrainingActivity}:
java.lang.NullPointerException
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
access$600(ActivityThread.java:141)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.os.Handler.dispatchMessage(Handler.java:99)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
Looper.loop(Looper.java:137)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
main(ActivityThread.java:5039)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
java.lang.reflect.Method.Invokenactive(本机方法)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
java.lang.reflect.Method.invoke(Method.java:511)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
dalvik.system.NativeStart.main(本机方法)
04-18 17:24:27.204:E/AndroidRuntime(1736):由以下原因引起:java.lang.NullPointerException
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.content.ContextWrapper.getResources(ContextWrapper.java:89)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
de.dbgeppelheim.functionality.VocabTrainer.initialise(VocabTrainer.java:167)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
de.dbgeppelheim.functionality.VocabTrainer.(VocabTrainer.java:40)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
de.dbgeppelheim.dbgvoca.TrainingActivity.(TrainingActivity.java:25)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
java.lang.Class.newInstanceImpl(本机方法)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
java.lang.Class.newInstance(Class.java:1319)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.app.Instrumentation.newActivity(Instrumentation.java:1054)
04-18 17:24:27.204:E/AndroidRuntime(1736):在
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
04-18 17:24:27.204:E/AndroidRuntime(1736):…还有11个

尝试将其放在res文件夹中。然后重新运行。如果仍然不起作用,请调试问题是否是由“未找到文件”错误引起的。

此问题说明了如何执行您尝试执行的操作。按照这些步骤操作,如果仍然不起作用,请返回


在尝试打开该文件之前,您是否可以尝试查看该文件是否存在?可能是路径问题?该文件位于assets文件夹的开头,因此它应该存在。可能是导出问题,应用程序何时应与emulator一起启动?发布您的logcat traceis VocabTrainer.java是您的?如果您的文件,请向我们展示第167行和ar行中的内容ound?我在第167行上面添加的代码是:InputStreamReader inputReader=new InputStreamReader(input);只是在res文件夹中尝试了一下,但也不起作用:(好的,那么我将尝试提供帮助。此代码节位于何处?它是否在当前运行的活动中?需要当前上下文才能访问文本文件,并且该上下文仅在活动中可用。如果此代码位于非活动库文件或不扩展活动的其他文件中,则在调用它时必须传递上下文。)是的,它不在活动中,但我将它传递给另一个类的构造函数,该类将它用作方法的参数(该方法应读取文件)这里面的某个地方可能有你的问题。Android真的很讨厌这种事情。试着把这个方法放到一个活动中去测试它。如果它在那里工作,你的上下文传递会有问题。让我知道是怎么回事。试试这个方法:把文件放在/res/raw目录中,文件将被索引并且可以通过R文件中的id访问:InputStream is=getResources().openRawResource(R.raw.vocabs);然后看看是否可以从该输入流中读取。谢谢!我刚刚用一个新项目尝试了它,它可以工作。但是我不知道为什么相同的代码在我的其他项目中不工作。。。
04-18 17:24:27.204: E/AndroidRuntime(1736): java.lang.RuntimeException: Unable to    
instantiate activity  
ComponentInfo{de.dbgeppelheim.dbgvocab/de.dbgeppelheim.dbgvocab.TrainingActivity}: 
java.lang.NullPointerException
04-18 17:24:27.204: E/AndroidRuntime(1736):     at  
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.ActivityThread.access$600(ActivityThread.java:141)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at    
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.os.Handler.dispatchMessage(Handler.java:99)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.os.Looper.loop(Looper.java:137)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at    
android.app.ActivityThread.main(ActivityThread.java:5039)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
java.lang.reflect.Method.invokeNative(Native Method)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at  
java.lang.reflect.Method.invoke(Method.java:511)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at    
dalvik.system.NativeStart.main(Native Method)
04-18 17:24:27.204: E/AndroidRuntime(1736): Caused by: java.lang.NullPointerException
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.content.ContextWrapper.getResources(ContextWrapper.java:89)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
de.dbgeppelheim.functionality.VocabTrainer.initialise(VocabTrainer.java:167)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
de.dbgeppelheim.functionality.VocabTrainer.<init>(VocabTrainer.java:40)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
de.dbgeppelheim.dbgvocab.TrainingActivity.<init>(TrainingActivity.java:25)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at  
java.lang.Class.newInstanceImpl(Native Method)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
java.lang.Class.newInstance(Class.java:1319)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.Instrumentation.newActivity(Instrumentation.java:1054)
04-18 17:24:27.204: E/AndroidRuntime(1736):     at   
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
04-18 17:24:27.204: E/AndroidRuntime(1736):     ... 11 more