ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 如何在android中逐行阅读?

2019-10-06 08:27:38  阅读:219  来源: 互联网

标签:file-handling android java


我正在使用此代码.

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有