2011-04-07 154 views
0

我需要關於這個的幫助,我想讀取存儲在SD卡中的文本文件並將結果存儲在ArrayList中以供後續使用,但代碼崩潰。Android從sdcsrd讀取文本並將其存儲在ArrayList中

public class 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; 

    } 

} 

}

回答

0

好固定的,文本文件有一個空行,刪除該行和代碼是確定現在

+0

的Andriod開發一個專門的工作,爲黑客像我一樣努力奮鬥身影瞭解爲什麼以及如何,但是我們最終完成了工作併產生了可靠的結果。 – MShalash 2011-04-07 16:50:11

相關問題