java – 如何在android中逐行阅读?
作者:互联网
我正在使用此代码.
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("config.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while ((br.readLine()) != null) {
temp1 = br.readLine();
temp2 = br.readLine();
}
in.close();
}catch (Exception e){//Catch exception if any
Toast.makeText(getBaseContext(), "Exception", Toast.LENGTH_LONG).show();
}
Toast.makeText(getBaseContext(), temp1+temp2, Toast.LENGTH_LONG).show();
但是这显示异常并且没有更新temp1和temp2.
解决方法:
你看到的例外 – 我强烈建议a)作为特定类型捕获,例如IOException,以及b)使用消息或堆栈跟踪进行日志记录或显示,以及c)至少要在LogCat中检查,如果您使用Eclipse编程,则从DDMS角度来看 – 可能是因为Android没有找到config.txt你试图打开的文件.通常,对于像您这样的最简单的情况,使用openFileInput – see the documentation打开应用程序专用的文件以获取详细信息.
除了异常之外,您的读取循环有缺陷:您需要在输入之前初始化空字符串,并在while条件下填充它.
String line = "";
while ((line = br.readLine()) != null) {
// do something with the line you just read, e.g.
temp1 = line;
temp2 = line;
}
但是,如果您只想将前两行保存在不同的变量中,则不需要循环.
String line = "";
if ((line = br.readLine()) != null)
temp1 = line;
if ((line = br.readLine()) != null)
temp2 = line;
正如其他人已经指出的那样,调用readLine会消耗一行,所以如果你的config.txt文件只包含一行你的代码在while条件下使用它,那么temp1和temp2会被赋值为null,因为没有更多的文本需要读取.
标签:file-handling,android,java 来源: https://codeday.me/bug/20191006/1859584.html