【问题标题】:writing object to internal storage将对象写入内部存储
【发布时间】: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


【解决方案1】:

在 cat 类中添加“implements Serializable”是可行的。我不确定为什么一开始没有。抱歉大惊小怪。

【讨论】:

    【解决方案2】:

    尝试使用:

    MODE_PRIVATE
    

    openFileOutput() 方法中。

    【讨论】:

    • 这在隐私方面是个好主意,但它不会导致或解决任何错误。
    猜你喜欢
    • 2012-11-26
    • 2011-05-31
    • 1970-01-01
    • 2016-03-24
    • 2011-10-10
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多