現在、Android プロジェクトに取り組んでいますが、オブジェクトを書き出すときにオブジェクトが保存されません。
これが私の書き方です。ここで、cont は Contact 型の ArrayList です。
if (contacts.size() > 0){
File fout = new File(c.getCacheDir(), "contacts.acl");
if (fout.exists()){
try{
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fout, false)));
for (Contact cont : contacts){
Log.d(MYACT, "Writing out: " + cont.getfName());
out.writeObject(cont);
}
out.flush();
out.close();
}catch (Exception e){e.printStackTrace();}
}
}
そして、これが私がそれらを読む方法です
private ArrayList<Contact> readContacts(){
ArrayList<Contact> contactList = new ArrayList<Contact>();
File file = new File(c.getCacheDir(), "contacts.acl"); //get contact file
Log.d(MYACT, "Launch File exists: " + file.exists());
if (file.exists()){ // if it exists then read in contacts while there are contacts left
try{
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
Log.d(MYACT, "Reading from file. Available: " + in.available());
while (in.available() > 0){
Contact cont = (Contact)in.readObject();
Log.d(MYACT, "Read in: " + cont.getfName());
contactList.add(cont);
}
in.close();
}catch (Exception e){
e.printStackTrace();
}
}
else // else creates the file
try{
file.createNewFile();
}catch (IOException e){}
return contactList;
}
最初は、ストリームを閉じるのを忘れたためだと思いましたが、すべて閉じられています。何が問題なのですか?オブジェクトを保存する他の解決策はありますか。もともとは、各連絡先を同じファイルに保存するようにしていましたが、連絡先のArrayListを保存するように転送しました。
助けてくれてありがとう。