Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建内部应用程序目录_Java_Android_Storage_Internal - Fatal编程技术网

Java 创建内部应用程序目录

Java 创建内部应用程序目录,java,android,storage,internal,Java,Android,Storage,Internal,我正在尝试创建一个特定于应用程序的目录(内部)来存储一些图像。我尝试了很多答案,但仍然没有任何效果。 我试过这个 但是这个目录仍然没有创建-Android/data/com.packagename/… 但是当我运行这个- File mediaDir = new File("/sdcard/Android/data/com.packagename"); if (!mediaDir.exists()){ mediaDir.mkdir(); } 虽然会在内部存储器中创建目录,但这是正确的方法

我正在尝试创建一个特定于应用程序的目录(内部)来存储一些图像。我尝试了很多答案,但仍然没有任何效果。 我试过这个

但是这个目录仍然没有创建
-
Android/data/com.packagename/…

但是当我运行这个-

File mediaDir = new File("/sdcard/Android/data/com.packagename");
if (!mediaDir.exists()){
    mediaDir.mkdir();
}
虽然会在内部存储器中创建目录,但这是正确的方法吗

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

内部存储
要查找应用程序的内部存储位置,请使用在任何
上下文
中调用的
getFilesDir()
(例如
活动
)来获取
文件
对象

getDir

请看一下:

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

getExternalFilesDir

它返回文件夹中文件的路径 Android/data/data/your_package/在SD卡上。用于存储 应用程序所需的任何文件(例如,从web或 缓存文件)。卸载应用程序后,此应用程序中存储的所有数据 文件夹也不见了。
也, 从KITKAT开始,不需要读写权限 返回的路径;呼叫应用程序始终可以访问该路径。此 仅适用于为调用的包名生成的路径 要访问属于其他包的路径, 需要写入外部存储和/或读取外部存储

可以查看更多信息:

对于API 8及以上版本,这将很好地工作

如果您还希望为API 7及以下版本提供类似的实现

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


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


如果要在sd卡上创建目录(通常称为外部存储,即使/sd卡路径位于内部闪存中),请使用
Context.getExternalFilesDir()
。这将创建一个类似
“/sdcard/Android/data//files/”的文件夹

我希望它位于内部存储。成功创建的目录位于内部。对于外部,如果我将其更改为sdcard1,它将存储到SD卡。但是,我希望它位于内部。如果您想要内部存储,则应使用Context.getDir(),不必担心确切的路径是什么。只需使用该方法返回的内容即可。不过,我怀疑您对“内部”的含义的理解可能与我不同。如果您解释了您希望使用存储的确切目的,可能会有所帮助。感谢您的回答和时间。Will'/sdcard/Android/data//files/“'对用户直接可见?我的意思是,如果我存储了一些图像,它将不会显示在库中,对吗?不,它们不会显示在库中。但如果这是您要使用的位置,不要在应用程序中硬编码,请使用getExternalFilesdir()相反。好的。事实上,我认为外部存储指的是SD卡。无论如何,谢谢。你为什么说这些外部存储文件不会显示在Gallery中?我希望媒体扫描程序一看到它们,它们就会显示出来(在下一次启动时,如果不是在文件夹中调用它的话)由于系统在/sdcard/Android/data/中创建了一个.nomedia文件,除了已经指出的错误概念外,您还需要知道,第一个带有内部存储的选项将很难使用应用程序本身以外的任何东西(或在根设备(如模拟器)上)进行验证因为这些文件通常是应用程序的私有文件,在安全设备上运行时,adb、ddms或连接的PC不可见。但是,可以使用
adb backup-f file-backup.ab com.packagename.app来提取整个目录层次结构
getExternalStorageDirectory()