创建内部app目录

时间:2014-02-26 18:46:34

标签: java android storage internal

我正在尝试创建一个应用程序特定目录(内部)来存储一些图像。我尝试过很多SO答案,但仍然无效。 我试过这个from here

File mydir = getApplicationContext.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir;

但此目录未创建 - Android/data/com.packagename/...

但是当我跑这个 -

File mediaDir = new File("/sdcard/Android/data/com.packagename");
if (!mediaDir.exists()){
    mediaDir.mkdir();
}

虽然创建了内部存储中的目录,但这是正确的方式吗?

  • 是的,我已经添加了内部读写权限

2 个答案:

答案 0 :(得分:3)

getApplicationContext().getDir()不会创建名为Android/data/com.packagename/的文件夹。 如果您记录/打印返回文件的路径,您将看到它是"/data/data/<packagename>/app_mydir/"。这是内部存储的方式。

如果要在SD卡上创建目录(通常称为外部存储,即使/ sdcard路径位于内部闪存存储中),也请使用Context.getExternalFilesDir()。这将创建一个像"/sdcard/Android/data/<packagename>/files/"

这样的文件夹

答案 1 :(得分:0)

内部存储
要在您应用的内部存储空间中查找位置,请使用getFilesDir()上的Context调用Activity(例如File}来获取getDir对象。

getExternalFilesDir
http://developer.android.com/reference/android/content/Context.html#getDir(java.lang.String,int)

请看一下:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

出于您的目的,您可以使用

而不是您对sdCard路径所做的操作
getExternalStorageDirectory()

http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

  

它返回文件夹里面的路径   SD卡上的Android / data / data / your_package /。它用于存储   您应用所需的任何文件(例如从网络或网站下载的图片)   缓存文件)。卸载应用程序后,存储在此中的任何数据   文件夹也消失了。
  也,   从KITKAT开始,无需读取或写入权限   返回的路径;它总是可以访问调用应用程序。这个   仅适用于为调用的包名生成的路径   应用。要访问属于其他包的路径,   需要WRITE_EXTERNAL_STORAGE和/或READ_EXTERNAL_STORAGE。

可以查看更多:
http://www.mysamplecode.com/2012/06/android-internal-external-storage.html

http://www.vogella.com/code/ApiDemos/src/com/example/android/apis/content/ExternalStorage.html

对于API 8及更高版本,它可以正常工作。

如果您想要API 7及更低版本的类似实现,

{{1}}
  

它返回SD卡的根路径(例如mnt / sdcard /)。如果你   保存此路径上的数据并卸载应用程序,该数据不会丢失。