将自定义对象保存到 SD 卡 (Android)

Saving custom object to sdcard (Android)

我正在探索在内部保存与在 SD 卡上保存。目前,我正在尝试在 sdcard 上保存自定义对象 (DummyTwice),如下所示:

            String root = (Environment.getExternalStorageDirectory().toString());
            File dir = new File(root + PUB_EXT_DIR);
            dir.mkdirs();
            File file = new File(dir,FILE_NAME);

            try {

                DummyTwice dt = new DummyTwice(textEnter.getText().toString());
                FileOutputStream os = new FileOutputStream(file);
                ObjectOutputStream oos = new ObjectOutputStream(os);
                oos.writeObject(dt);
                oos.close();
                os.close();

                Toast.makeText(v.getContext(),"Object Saved",Toast.LENGTH_SHORT).show();
                Toast.makeText(v.getContext(),file.getAbsolutePath(), Toast.LENGTH_LONG).show();

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

执行停止于:

FileOutputStream os = new FileOutputStream(file);

捕获异常:

FileNotFoundException e

我做错了什么?相关常量:

private final static String PUB_EXT_DIR = /data
private final static String FILE_NAME = /obj.dat 

你不应该直接写在sdcard上,你应该使用

getExternalFilesDir(null)

而不是

Environment.getExternalStorageDirectory()

getExternalFilesDir(null) returns sdcard 上的私人路径供您 Activity 使用,例如 /sdcard/Android/data/package.your.app