【问题标题】:Writing object to file将对象写入文件
【发布时间】:2015-05-15 09:11:36
【问题描述】:

我有一个应该将对象写入文件的方法。我尝试了多种方法,但要么不写入文件,要么进入我的catch 语句,我的代码如下:

public void createFoo(Foo foo)
{
    ObjectOutputStream out = null;
    try
    {
        out = new ObjectOutputStream(new FileOutputStream("C:\\Users\\PERSON\\AndroidStudioProjects\\PROJECT\\bar.dat"));
        out.writeObject(event);
        Log.i("CreateFoo", "Write success");
    }
    catch (IOException e)
    {
        Log.i("CreateFoo", "Write - Catch error can't find .dat");
    }
    finally
    {
        try
        {
            out.close();
        }
        catch (Exception e)
        {
            Log.i("CreateFoo", "Write - Failed to close object output stream.");
        }
    }
}

我已尝试查看其他线程,但仍然遇到问题,我的 Foo 对象在其声明中也有 implements Serializable

【问题讨论】:

    标签: java android serialization io


    【解决方案1】:

    更换

    out = new ObjectOutputStream(new FileOutputStream("C:\\Users\\PERSON\\AndroidStudioProjects\\PROJECT\\bar.dat"));
    

    File outFile = new File(Environment.getExternalStorageDirectory(), "bar.data");
            out = new ObjectOutputStream(new FileOutputStream(outFile));
    

    成功了,谢谢你的帮助!

    【讨论】:

      【解决方案2】:

      你的Android设备没有C:\\Users\\PERSON\\AndroidStudioProjects\\PROJECT\\目录,很大程度上是因为Android不是Windows,所以Android没有盘符。此外,您不能只写入 Android 中的任何目录——您的应用仅限于 internal storageexternal storage 和(在 Android 4.4+ 上)removable storage

      此外,将来,当您在 Stack Overflow 上询问有关您的应用程序如何崩溃的问题时,use LogCat and post the stack trace

      【讨论】:

      • 我正在使用 Android Studio 模拟器,所以我认为它会在其文件目录中查找 .dat。存储到外部存储是否会存储在 Windows 目录中?
      • @Dan 模拟器的外部存储是磁盘映像。您在模拟器上的应用写入外部存储的文件将位于该磁盘映像文件中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2019-11-21
      • 2013-04-27
      • 2013-07-14
      相关资源
      最近更新 更多