2011-09-02 166 views
0

我在序列化我的對象時遇到了一些問題。序列化問題

我認爲我錯過了一些東西,因爲我的應用程序沒有保存.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 here:

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

提前感謝!

回答

0

的解決方案,這一點,而不是

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

粘貼此

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

相同的輸出。

0

你應該通過整個路徑而不是隻有文件名到FileOutputStream

如果這樣做不行嘗試

new FileOutputStream(new File(fich)); 
+0

我如何得到整個路徑?謝謝 – unpix

+0

我知道答案,我會發布答案(+/- 7小時)。 – unpix