将列表保存到文件android

时间:2011-07-19 02:58:38

标签: java android android-file

* INITIALIZE VARIABLES

String serfilename;

List<HashMap<String, String>> painItems = new ArrayList<HashMap<String, String>>();

ON CREATE METHOD

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.addscreen);
//getPainItems from the saved file
if(loadListFromFile((ArrayList<HashMap<String, String>>) painItems) != 
      null)
    painItems = loadListFromFile((ArrayList<HashMap<String, String>>) 
        painItems);
}

从文件方法加载列表

private ArrayList<HashMap<String, String>> loadListFromFile(

    ArrayList<HashMap<String, String>> masterlistrev) {
try {

    FileInputStream fis = openFileInput(serfilename);
    ObjectInputStream ois = new ObjectInputStream(fis);
    masterlistrev = (ArrayList<HashMap<String, String>>) ois.readObject();
 } catch (Exception e) {
    e.printStackTrace();
 }
return masterlistrev;
}

写入文件列表

private void writeListToFile(ArrayList<HashMap<String, String>> masterlistrev){

    File myfile = getFileStreamPath(serfilename);
    try {
        if(myfile.exists() || myfile.createNewFile()){
            FileOutputStream fos = openFileOutput(serfilename, MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(masterlistrev);
     }
 } catch (Exception e) {
     e.printStackTrace();
 }

 }

ONSTOP()方法

 protected void onStop(){
    super.onStop();
    writeListToFile((ArrayList<HashMap<String, String>>) painItems);
}

我在File myfile = getFileStreamPath(serfilename);上得到一个NULL指针异常。我该如何解决这个问题..有没有更好的方法呢??

1 个答案:

答案 0 :(得分:1)

根据您粘贴的内容,您的serfilenamenull,并且永远不会设置为路径。

即便如此,即便如此,

File myfile = getFileStreamPath(serfilename);
由于您的(null)输入,

将被抛出NullPointerException

说服自己。尝试:

if(null == serfilename)
    throw new RuntimeException ("serfilename is null!");

File myfile = getFileStreamPath(serfilename);