【发布时间】:2014-11-29 17:56:54
【问题描述】:
我已成功将字符串写入和读取到我的 android 应用程序内部存储上的文件中,但我想写入一个对象但它不工作。我已经阅读了 Oracle 关于此事的文档,其中说对象字段通过流传输,对象需要实现可序列化或其他内容。我向 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;
}
}
【问题讨论】:
-
什么是错误?特别是在
cat implements Serializable的情况下。请将 logcat 错误添加到您的问题中- -
对不起!我添加了实现 Serializable 并且它现在可以工作了。奇怪的。抱歉打扰了。
标签: java android object storage internal