如何逐行读取文件

时间:2011-08-24 12:09:07

标签: android android-assets readfile

我有一个文件在单独的行中 我想首先显示行,然后如果我按下按钮,第二行应显示在TextView中,第一行应该消失。然后,如果我再次按下它,则应显示第三行,依此类推。

我是否必须使用TextSwitcher或其他任何内容? 我怎么能这样做?

3 个答案:

答案 0 :(得分:31)

您将其标记为“android-assets”,因此我假设您的文件位于assets文件夹中。这里:

InputStream in;
BufferedReader reader;
String line;
TextView text;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    text = (TextView) findViewById(R.id.textView1);
    in = this.getAssets().open(<your file>);
    reader = new BufferedReader(new InputStreamReader(in));
    line = reader.readLine();

    text.setText(line);
    Button next = (Button) findViewById(R.id.button1);
    next.setOnClickListener(this);
}

public void onClick(View v){
    line = reader.readLine();
    if (line != null){
        text.setText(line);
    } else {
        //you may want to close the file now since there's nothing more to be done here.
    }
}

试一试。我无法验证它是否完全有效,但我相信这是您想要遵循的一般想法。当然,您需要将任何R.id.textView1/button1替换为您在布局文件中指定的名称。

另外:为了节省空间,这里的错误检查非常少。您需要检查资产是否存在,并且我非常确定在您打开文件进行阅读时应该有try/catch块。

编辑:错误很大,不是R.layout,而是R.id 我已经编辑了我的答案来解决问题。

答案 1 :(得分:15)

以下代码应满足您的需求

try {
// open the file for reading
InputStream instream = new FileInputStream("myfilename.txt");

// if file the available for reading
if (instream != null) {
  // prepare the file for reading
  InputStreamReader inputreader = new InputStreamReader(instream);
  BufferedReader buffreader = new BufferedReader(inputreader);

  String line;

  // read every line of the file into the line-variable, on line at the time
  do {
     line = buffreader.readLine();
    // do something with the line 
  } while (line != null);

}
} catch (Exception ex) {
    // print stack trace.
} finally {
// close the file.
instream.close();
}

答案 2 :(得分:0)

您可以简单地使用TextView和ButtonView。使用BufferedReader读取文件,它将为您提供一个很好的API来逐行读取行。单击该按钮,只需使用settext更改textview的文本。

您还可以考虑阅读所有文件内容并将其放入字符串列表中,如果您的文件不是太大,这可以更清晰。

此致  斯特凡