从应用程序内存中读取文件

时间:2013-10-04 18:41:55

标签: android string file

我正在尝试获取一些我已保存在应用中的字符串并打印出来。出于某种原因,我的应用程序崩溃了。你可以帮帮我吗? :)

ListView list;
String[] listC, filenames;
String entry;
int files, i;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pastbets);

    list = (ListView) findViewById(R.id.list);
    listC = new String[filenames.length/2];
    Prepare();

    ArrayAdapter<String> filenameAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listC);
    list.setAdapter(filenameAdapter);
}

private void Prepare() {
    filenames = getApplicationContext().fileList();
    files = filenames.length/2;
    for(i=0; i<files; i++) {
        entry = openFile(filenames[2*i])+" - "+openFile(filenames[2*i+1]);
        listC[i] = entry;
    }
}

我认为'openFile'功能没问题,但是......

private String openFile(String selectFile) {
    String file = "";
    FileInputStream fis;

    try {
        fis = openFileInput(selectFile);
        byte[] input = new byte[fis.available()];
        while(fis.read(input) != -1){
            file += new String(input);
        }
        fis.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return file;
}

1 个答案:

答案 0 :(得分:0)

应用程序崩溃是因为filenames Array在使用之前未初始化,因此在初始化Prepare()数组之前调用listC方法:

 list = (ListView) findViewById(R.id.list);
 Prepare();
 listC = new String[filenames.length/2];