我可以从除Drawable或Assets之外的任何其他文件夹加载文件吗?

2022-05-26 00:00:00 image android java drawable

我知道Android中的大多数文件访问方法一般都是通过访问Drawable(使用R.Drawable..)来执行的。或某些资产(使用AssetManager)。

无论如何,我是否可以访问我的Android项目名称下的任何其他文件夹,如myFolderA或myNewFolderA?

如果可能的话,我想这些其他方式可能不被认为是正常的,但我只想知道这是否可能。


解决方案

我是否可以访问Android项目名称下的myfolderAmyNewFolderA等上述文件夹以外的其他文件夹?

是您可以,如Android Documentation中所述:


Android使用的文件系统类似于其他平台上的基于磁盘的文件系统。您可以使用Android文件系统File APIs读写文件。

File对象适合以从头到尾的顺序读取或写入大量数据,而无需跳过。例如,它适用于图像文件或通过网络交换的任何内容。


您还必须注意在哪里读/写您的文件:

内部和外部存储

所有Android设备都有两个文件存储区域:内部存储和外部存储。这些名字来自Android的早期,当时大多数设备都提供内置的非易失性存储器(内部存储),以及微型SD卡(外部存储)等可移动存储介质。有些设备将永久存储空间分为&内部和外部分区,因此即使没有可移动存储介质,也总是有两个存储空间,并且无论外部存储是可移动的还是不可移动的,API的行为都是相同的。以下列表汇总了有关每个存储空间的事实。


在内部存储上保存文件
在将文件保存到内部存储时,您可以通过调用以下两种方法之一获取相应的目录File

getFilesDir()

返回表示您的应用的内部目录的文件。

getCacheDir()
返回代表应用程序临时缓存文件的内部目录的文件。确保在不再需要每个文件时将其删除,并对您在任何给定时间使用的内存量实施合理的大小限制,例如1 MB。如果系统存储空间开始不足,它可能会在没有警告的情况下删除您的缓存文件。

要在其中一个目录中创建新文件,可以使用File()构造函数,传递由上述方法之一提供的File,该方法指定您的内部存储目录。例如:

File file = new File(context.getFilesDir(), filename);

外部存储的权限:
为了允许您进行读写,您必须授予权限:

<manifest ...>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

相关文章