我需要这方面的帮助,我正在尝试读取存储在SD卡中的文本文件,并将结果存储在ArrayList中以供后续使用,但代码崩溃了。
公共类Mytextreader扩展了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;
}
}
}
答案 0 :(得分:0)
好的修复,文本文件有一个空行,删除了该行,代码现在正常