对于我的android项目,我需要序列化一个用户对象。这样做的目的是保存和加载这个对象,因此当应用程序关闭(被销毁)时,对象和它的属性被保存并存储在一个文件中。我的问题是,加载对象时会出现错误。它说没有这样的文件或目录名为'save.bin',尽管我试图创建它。这是我的代码:
public class SaveAndLoadManager{
public void save(Object object){
Log.d("Save", "saving object");
try{
File userInfo = new File("save.bin");
FileOutputStream fileOutputStream = new FileOutputStream(userInfo);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.close();
Log.d("Save", "object saved");
}catch(FileNotFoundException e){
Log.e("Save", e.getMessage());
}catch(IOException e){
Log.e("Save", e.getMessage());
}
}
public Object load(){
Log.d("Load", "loading object");
Object object = null;
try{
FileInputStream fileInputStream = new FileInputStream("save.bin");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
object = objectInputStream.readObject();
objectInputStream.close();
Log.d("Load", "object loaded");
}catch(FileNotFoundException e){
Log.e("Load", e.getMessage());
}catch(StreamCorruptedException e){
Log.e("Load", e.getMessage());
}catch(Exception e){
Log.e("Load", e.getMessage());
}
return object;
}
}如何正确创建目录?
发布于 2015-03-30 10:26:58
假设User正在实现Serialazible
File userInfo = new File("save.bin");您可以考虑上面的行,就像一个名为"save.bin"的文件对象,存储在文件系统上的根(/)中。应用程序不能写入此位置。您的应用程序拥有两个写入位置的权限,一个存储在/data/data/yourapp下,另一个存储在/sdcard/Android/data/yourapp上。两者都应该通过公共api进行访问。例如,可以使用对openFileOutput检索FileOutputStream/FileInputStream
FileOutputStream fileOutputStream = openFileOutput("save.bin", Context.MODE_PRIVATE)
FileInputStream fileInputStream = openFileInput("save.bin");正如@androidLerner在他的评论中提到的,您可以找到更多的信息这里,
https://stackoverflow.com/questions/29343733
复制相似问题