访问Android应用程序内部存储器中的子目录以进行写入
我已经在我的应用程序的内部存储器中创建了一个images子目录。因此,完整的路径是访问Android应用程序内部存储器中的子目录以进行写入,android,fileoutputstream,android-internal-storage,Android,Fileoutputstream,Android Internal Storage,我已经在我的应用程序的内部存储器中创建了一个images子目录。因此,完整的路径是 /data/data/{app_namespace}/images 现在,我已经成功地创建了一个用于存储图像的uri/data/data/{app_namespace}/images/enh.jpeg 然而,当我想打开文件进行写作时,我分别使用的两种方法面临两个问题: FileOutputStream out=新的FileOutputStream(uri\u路径):没有这样的文件或目录 FileOutputStr
/data/data/{app_namespace}/images
现在,我已经成功地创建了一个用于存储图像的uri/data/data/{app_namespace}/images/enh.jpeg
然而,当我想打开文件进行写作时,我分别使用的两种方法面临两个问题:
FileOutputStream out=新的FileOutputStream(uri\u路径)
:没有这样的文件或目录FileOutputStream out=context.openFileOutput(uri\u path,context.MODE\u PRIVATE)
:文件包含路径分隔符我想了解如何打开
/data/data/{app_namespace}/images/enh.jpeg
进行写作?还有其他我不知道的方法吗?我发现了这个问题。实际上,我正在构建uri\u path
变量,如下所示
uri\u path=uri.getPath()
这只返回
/images/enh.jpeg
,因为前面的部分是在uri
的authority
字段中编码的。关于如何从Uri
提取绝对路径,互联网上其他地方有多种解决方案,为了简洁起见,我将在这里省略 我建议您使用标准位置,如getFilesDir()
,以及在这些位置下创建的子目录。@commonware您没有阅读这个问题吗?正如我所说,“images”目录在我的应用程序的内部存储下,我使用context.getFilesDir()检索它。不,不是/data/data/{app_namespace}/images
不在getFilesDir()
下。它是。我可以验证/data/data/{app_namespace}是getfiledir()返回的路径,在您的设备上,它可能是为您的帐户返回的路径。getFilesDir()
的标准结果将以files/
结尾,因为还有其他对等目录(例如,对于SharedReferences
,databases/
对于默认的SQLiteDatabase
位置)。前面的路径段将包括您的应用程序ID
,并且具有不同的根,尽管/data/data/
是常见的。在大多数Android设备上,getFilesDir()
将返回类似于/data/data/../files/
的值。我不知道你的设备制造商对这个getFilesDir()
值的想法。