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);
    }

}

}

そのフォルダを手動で作成しました。次のエラーがスローされます: "java.io.FileNotFoundException: /test/test.txt: open failed: ENOENT" (No such file or directory)

私が試したとき

 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();
    }

}
4

2 に答える 2

1

これnew File("test","test.dat")は、Android でファイル パスを取得する有効な方法ではありません。

これを試して:

new File(Environment.getExternalStorageDirectory(), "/data.dat");
于 2013-02-25T14:39:10.190 に答える
0

アプリのデフォルトの現在の作業ディレクトリは「/」であり、書き込み権限はありません。

于 2013-02-25T15:59:28.347 に答える