Answers:
raw
文件夹和assets
文件夹之间的主要区别。
由于raw是Resources(res)的子文件夹,因此Android会自动ID
为其中的任何文件生成。这
ID
随后被存储在R class
将充当一个文件的引用,这意味着它可以从其他Android类和方法,甚至在Android的XML文件可以轻松访问。使用自动生成的ID是访问Android中文件的最快方法。
该assets
文件夹是一个“附录”目录。的R类别不产生标识为放置在那里的文件,这与部分Android类和方法不太相容。文件assets
夹中的文件访问速度较慢,因为您将需要基于String获取该文件的句柄。但是,通过将文件放置在此文件夹中,可以更轻松地完成某些操作,例如将数据库文件复制到系统的内存中。没有(简便)的方法来创建对Assets文件夹中文件的Android XML引用。
/asset
目录中。
从Android文档,该raw/
目录用于:
以原始格式保存的任意文件。要使用原始InputStream打开这些资源,请使用资源ID(即R.raw.filename )调用Resources.openRawResource()。。
但是,如果需要访问原始文件名和文件层次结构,则可以考虑将一些资源保存在
assets/
目录中(而不是res / raw /)。没有给Assets /中的文件提供资源ID,因此您只能使用AssetManager读取它们。
一行中,raw/
目录中的文件不是由平台编译的,没有分配资源ID,并且不能分组为子文件夹,而如果需要,请使用该assets/
目录。
除了以上给出的答案...
/ res / strings,/ res / layout,/ res / xml文件等都被编译成二进制格式。但是,如果将包括XML文件在内的文件放在/ res / raw /目录中,则它们不会被编译成二进制格式。
使用资产而不是原始资源的一大优势是
file:///android_asset/
Uri前缀。这对于将资产加载到WebView中很有用。例如,要访问位于项目内Assets / foo / index.html中的资产,可以调用loadUrl("file:///android_asset/foo/index.html")
将HTML加载到WebView中。
file:///android_res/
前缀指向原始资源。