序列化问题

时间:2011-09-02 18:16:46

标签: android serialization

我在序列化对象时遇到了一些问题。

我认为我错过了一些东西,因为我的应用程序没有保存.dat应该是。

让我们展示一些代码:

加载.dat文件

public void gravar(ObjectOutputStream out) throws IOException {
      out.writeObject(lista);
      out.writeObject(cadeiras);
      out.writeObject(notas);
      out.close();
  }

保存.dat文件

public void carregar(ObjectInputStream in) throws IOException, ClassNotFoundException {
     lista=(ArrayList<String>) in.readObject();
     cadeiras=(ArrayList<String>) in.readObject();
     notas= (ArrayList<String>) in.readObject();
      in.close();
  }

当我尝试保存文件时,我的应用程序在此处捕获异常 FileNotFoundException

case R.id.gravar:
        ObjectOutputStream out;

           try {
                out = new ObjectOutputStream(new FileOutputStream(fich));
                gravar(out);
                   Toast.makeText(getApplicationContext(), "nice!", Toast.LENGTH_LONG).show();

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
               Toast.makeText(getApplicationContext(), "error1!", Toast.LENGTH_LONG).show();

                e.printStackTrace();
            } catch (IOException e) {
               Toast.makeText(getApplicationContext(), "error2!", Toast.LENGTH_LONG).show();

                e.printStackTrace();
            }
        return true;

fich 是这样的:

private static String fich = "gravar.dat";

我错过了什么?为了更好的帮助,我在这里使用我的代码。

http://pastebin.com/Ax2cHjUA

提前致谢!

2 个答案:

答案 0 :(得分:0)

您应该将整个路径而不是文件名传递给FileOutputStream

如果这样做不起作用,请尝试

new FileOutputStream(new File(fich));

答案 1 :(得分:0)

解决方案是,而不是

out = new ObjectOutputStream(new FileOutputStream(fich));

粘贴此

out = new ObjectOutputStream(this.openFileOutput(fich, Context.CONTEXT_IGNORE_SECURITY));

输出相同。