Android читает текстовые файлы из sdcsrd и сохраняет их в ArrayList

Мне нужна помощь в этом, я пытаюсь прочитать текстовый файл, сохраненный в SDCard и сохранить результат в ArrayList для последующего использования, но код падает.

открытый класс Mytextreader extends Activity {final ArrayList> dataList = new ArrayList> ();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    loadData();
    String text = "";
    for (int i = 0; i < dataList.size(); i++) {
        text = text + dataList.get(i).get("name") + ":"
                + dataList.get(i).get("image") + ":"
                + dataList.get(i).get("price") + ":"
                + dataList.get(i).get("barcode") + "\n";
    }
    TextView txv = (TextView) findViewById(R.id.textView01);
    txv.setText(text);
}

private void loadData() {

    File sdcardDir = Environment.getExternalStorageDirectory();
    String sdcard = sdcardDir.getAbsolutePath();
    File file = new File(sdcard + "/Downloads/data/data.txt");

    // For each entry the following lines are repeated

    HashMap<String, String> hmap = new HashMap<String, String>();
    String text = "", line = "";

    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader(file));
        while ((line = br.readLine()) != null) {
            text = text + line + "\n";

        }
        br.close();
    } catch (IOException e) {
        Log.d("File Read test: Error= ", e.getMessage());
    }

    while (true) {
        line = text.substring(0, text.indexOf('\n'));
        text = text.substring(text.indexOf('\n') + 1);

        hmap.put("name", line.substring(0, line.indexOf(';')));
        line = line.substring(line.indexOf(';') + 1);
        // Toast.makeText(this, line, Toast.LENGTH_LONG).show();
        hmap.put("image", line.substring(0, line.indexOf(';')));
        line = line.substring(line.indexOf(';') + 1);
        // Toast.makeText(this, line, Toast.LENGTH_LONG).show();
        hmap.put("price", line.substring(0, line.indexOf(';')));
        line = line.substring(line.indexOf(';') + 1);
        // Toast.makeText(this, line, Toast.LENGTH_LONG).show();
        hmap.put("barcode", line);
        dataList.add(hmap);
        hmap.clear();
        if (text.length() == 0)
            break;

    }

}

}

1 ответ

Хорошо исправлено, текстовый файл имеет пустую строку, удалил эту строку и код теперь в порядке

Другие вопросы по тегам