我知道Android中的大多数文件访问方法通常是通过访问drawable(使用R.drawable ..)或某些资产(使用AssetManager)来执行的。
无论如何,我可以在我的android项目名称下访问除上面的文件夹以外的任何其他文件夹吗?
如果可能,我猜其他方式可能不正常,但我只是想知道这是否可行。 THX。
答案 0 :(得分:1)
我可以在Android项目名称下访问上述文件夹以外的任何其他文件夹,例如
myfolderA
或myNewFolderA
吗?
是您可以按Android Documentation:
中的说明进行操作 Android
使用的文件系统与其他平台上基于磁盘的文件系统类似。您可以使用Android
文件系统来使用File APIs
读取和写入文件。
File
对象适合从头到尾读取或写入大量数据而不会跳过。 例如,它适用于图像文件或通过网络交换的任何内容。
此外,您必须小心读取/写入文件的位置:
内部和外部存储
所有Android设备都有两个文件存储区:"内部"和"外部"存储。这些名称来自Android的早期,大多数设备提供内置的非易失性存储器(内部存储),以及可移动存储介质,如micro SD卡(外部存储)。有些设备将永久存储空间划分为内部存储空间。和"外部"分区,因此即使没有可移动存储介质,也总是有两个存储空间,无论外部存储是否可移动,API行为都是相同的。以下列表总结了每个存储空间的事实。
在内部存储上保存文件
将文件保存到内部存储时,可以通过调用以下两种方法之一获取File
的相应目录:
getFilesDir()
返回表示应用内部目录的文件。
getCacheDir()
返回表示应用程序临时缓存文件的内部目录的文件。 确保在不再需要时删除每个文件,并对在任何给定时间使用的内存量(例如1MB)实施合理的大小限制。如果系统开始运行时存储不足,它可能会在没有警告的情况下删除您的缓存文件。
要在其中一个目录中创建新文件,您可以使用
File()
构造函数,传递上述方法之一提供的File
,指定您的内部存储目录。例如:
File file = new File(context.getFilesDir(), filename);
权限对于externa存储:
为了允许您进行读写,您必须授予权限:
<manifest ...>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
答案 1 :(得分:0)
您可以包含来自
的外部文件资源res/raw
文件夹
Resources myResources = getResources();
InputStream myFlie = myResources.openRawResources(R.raw.myFileName);
希望有所帮助(:
答案 2 :(得分:0)
尝试获取位图并将其转换为Drawable:
Bitmap myBitmap = BitmapFactory.decodeFile(pathName);
转换它:
Drawable myDrawable = new BitmapDrawable(getResources(), myBitmap);
如果您只想使用来自不同路径的图像,这应该可以。