gpt4 book ai didi

java - 尝试调用 BufferedReader.readLine() 时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-01 10:03:35 24 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,它必须解析文件中的文本。

我的 Parser.java 类中有以下方法:

private String getText(String fileName) {
BufferedReader buffer = null;
File file = new File(fileName);
try{
buffer = new BufferedReader( new FileReader(file));
}
catch (FileNotFoundException e){
System.out.println("Could not find file" + fileName);
}

String everything = null;
try{
StringBuilder builder = new StringBuilder();
String line = null;

while ((line = buffer.readLine()) != null){
builder.append(line);
builder.append(System.lineSeparator());
line = buffer.readLine();
}
everything = builder.toString();
//buffer.close();
}
catch (IOException e) {
e.printStackTrace();
return null;
}
finally {
if ((buffer != null)) {
try {
buffer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return everything;
}

每当 while 循环中调用 buffer.readLine() 方法时,我都会遇到问题。

我传入以下路径信息,文件对象是这样的:

"/Users/aa/Desktop/parser.txt"

现在,我已经查看了堆栈和在线上的大量帖子,以尝试解决此问题,并尝试使用 this 中的一些解决方案。和 this但没有运气。这是我得到的错误堆栈跟踪的 fragment 。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.BufferedReader.readLine()' on a null object reference
at com.example.allanaraujo.parser.Parser.getText(Parser.java:40)
at com.example.allanaraujo.parser.Parser.parse(Parser.java:19)
at com.example.allanaraujo.parser.OpenDocument.uploadButton(OpenDocument.java:62)
at java.lang.reflect.Method.invoke(Native Method) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
at android.view.View.performClick(View.java:5198) 
at android.view.View$PerformClick.run(View.java:21147) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

我确信文件的路径是正确的,因为我在调试时检查了它。我不确定我还应该在这里考虑什么。

编辑:我正在 OS X 上开发,而不是 Windows 或 Linux

最佳答案

您似乎正在尝试将本地(可能是 Windows)文件路径传递到您的设备或模拟器。

“/Users/aa/Desktop/parser.txt”

这行不通。您的 Android 项目中必须有该文件。您可以将其放在 Assets 文件夹中并像这样访问它:

AssetManager manager = context.getAssets();
InputStream input = manager.open("parser.txt");

或者您可以将其放入原始文件夹中并按如下方式访问:

InputStream input = context.getResources().openRawResource(R.raw.parser);

您在 BufferedReader 上得到 null 的原因是系统在您的 Android 项目中找不到该文件路径。然后,正如评论中所指出的,您没有正确处理异常并继续尝试读取流。

关于java - 尝试调用 BufferedReader.readLine() 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com