Android读取文本文件并将其存储到基于第一个单词的变量

时间:2018-11-12 12:42:36

标签: java arrays bufferedreader

我正在阅读文本文件,在其中读取数据并将其存储到字符串数组对象中的做法。一个ArrayList数据应包含照片,标题,网站和日期。文本文件如下所示:

photo:android_pie
title:Android Pie: Everything you need to know about Android 9
website:https://www.androidcentral.com/pie
date:20-08-2018
photo:oppo
title:OPPO Find X display
website:https://www.androidpit.com/oppo-find-x-display-review
date:25-08-2018
photo:android_pie2
title:Android 9 Pie: What Are App Actions & How To Use Them
website:https://www.androidheadlines.com/2018/08/android-9-pie-what-are-app- 
actions-how-to-use-them.html
date:16-09-2018

我试图将它们拆分并存储到字符串数组中,这是我的对象类的一个实例:

 private List<ItemObjects> itemList;

这是我的对象类的构造函数:

    public ItemObjects(String photo, String name, String link, String date) {
    this.photo = photo;
    this.name = name;
    this.link = link;
    this.date = date;
}

我尝试了这个,但是“:”分隔符并没有像我想要的那样将其分隔:

                while ((sItems = bufferedReader.readLine()) != null) {
                if (!sItems.equals("")) {
                    String[] tmpItemArr = sItems.split("\\:");

                    listViewItems.add(new ItemObjects(tmpItemArr[0], tmpItemArr[1], tmpItemArr[2], tmpItemArr[3]));
                }
            }

做到这一点的最佳方法是什么?我试过使用for循环,该循环在第三行停止,并将下一个作为新数据添加。网上有几种方法,但是有些非常复杂,我很难理解。

1 个答案:

答案 0 :(得分:0)

问题是您对同时使用split函数和BufferReader的理解。 通过使用readline函数,您仅读取一行,因此您的拆分将仅拆分第一行,您需要阅读前4行,然后添加该项。

  int count = 0;
  String[] tmpItemArr = new String[4];
  while ((sItems = bufferedReader.readLine()) != null) {
        if (!sItems.equals("")) {
            tmpItemArr[count] = sItems.split(":")[1];
            count++;
            if (count > 3) {
                listViewItems.add(new ItemObjects(tmpItemArr[0], tmpItemArr[1], tmpItemArr[2], tmpItemArr[3]));
                count = 0;
            }
        }
    }