我已经成功地在我的Android应用程序的内部存储器上编写和读取字符串到一个文件,但我想写一个对象并且它无法正常工作。我已经阅读了Oracle关于这个问题的文档,其中说对象字段是通过对象需要实现可序列化的流传输的,或者是什么。我添加了可序列化的进口并实现了serializable到cat类,但它引发了一个错误。没有它" oos.writeObject(myCat);"也会导致错误。我很困惑。
以下代码存在于与layout.xml绑定的java活动类中。用户按下按钮并保存或加载对象。如上所述,书写和阅读字符串似乎工作正常,但对象不那么正常。
private void writeFile()
{
try
{
String myFile = "myFile";
cat myCat = new cat("Harry", "blue", 11);
FileOutputStream fos = openFileOutput(myFile,MODE_WORLD_READABLE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(myCat);
oos.close();
fos.close();
Toast.makeText(getBaseContext(),"object saved",Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
e.printStackTrace();
}
}
并且
private void readFile()
{
try
{
String myFile = "myFile";
FileInputStream fis = openFileInput(myFile);
ObjectInputStream ois = new ObjectInputStream(fis);
cat yourCat = (cat) ois.readObject();
ois.close();
fis.close();
String output = yourCat.name + " the " + yourCat.colour + " cat";
Toast.makeText(getBaseContext(),output,Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
}
}
猫对象
public class cat
{
public String name = "";
public String colour = "black";
public int age = 0;
public cat(String pName, String pColour, int pAge)
{
name = pName;
colour = pColour;
age = pAge;
}
}
答案 0 :(得分:1)
添加"实现Serializable"到猫类的作品。我不确定为什么它首先没有。对不起,大惊小怪。
答案 1 :(得分:0)
在openFileOutput()方法中使用..... MODE_PRIVATE
希望它可以帮助你......thanxx ...