我正在尝试创建一个应用程序特定目录(内部)来存储一些图像。我尝试过很多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();
}
虽然创建了内部存储中的目录,但这是正确的方式吗?
答案 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()
它返回文件夹里面的路径 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 /)。如果你 保存此路径上的数据并卸载应用程序,该数据不会丢失。