2013-02-25 126 views
1

我嘗試這樣做內部存儲(機器人)文件:保存對象上

public class People implements Serializable { 

String name; 

public People(String name) 
{ 
    this.name = name; 
} 

public String getName() 
{ 
    return name; 
} 

public void saveAsObject(People p) throws FileNotFoundException, IOException 
{ 
    try 
    { 
     ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(new File("test","test.dat"))); 
     os.writeObject(p); 
     os.close(); 
     System.out.println("Sucess"); 
    } 

    catch(IOException e) 
    { 
     System.out.println(e); 
    } 

} 

} 

我手動創建該文件夾。它拋出這個eror: 「java.io.FileNotFoundException:/test/test.txt的:打開失敗:ENOENT」(沒有這樣的文件或目錄)

,當我試圖

new FileOutputStream("text.dat") 

它拋出java.io .FileNotFoundException:EROFS(只讀文件系統)

這是我的主類:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
      People p = new People("Ray"); 
    try { 
     p.saveAsObject(p); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 
+0

試試這個:http://stackoverflow.com/a/15067968/1531054 – 2013-02-25 14:37:35

+0

謝謝你,我會嘗試Context.getFilesDir()。 – n0hepe 2013-02-25 14:56:54

回答

1

new File("test","test.dat")是沒有得到Android上的文件路徑的一個有效途徑。

試試這個:

new File(Environment.getExternalStorageDirectory(), "/data.dat"); 
+0

我想將它保存在內部存儲上,我可以使用Environment.getDataDirectory()嗎? – n0hepe 2013-02-25 14:54:19

+0

您可以調用'getCacheDir()'。 – Budius 2013-02-25 14:55:13

0

您的應用程序的默認當前工作目錄爲「/」,你會不會有寫權限。