Android ::我可以从除drawable或assets之外的任何其他文件夹加载文件吗?

时间:2015-10-08 09:42:08

标签: java android image drawable

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

无论如何,我可以在我的android项目名称下访问除上面的文件夹以外的任何其他文件夹吗?

如果可能,我猜其他方式可能不正常,但我只是想知道这是否可行。 THX。

3 个答案:

答案 0 :(得分:1)

  

我可以在Android项目名称下访问上述文件夹以外的任何其他文件夹,例如myfolderAmyNewFolderA吗?

您可以按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);

如果您只想使用来自不同路径的图像,这应该可以。