Android工程的assets和res/raw目录解析

     在安卓工程目录下面经常会有assets和res/raw这两个文件目录,而且我们都知道在这两个文件夹中存放的资源一般不要大于1M;

     这两个文件目录里的文件都会直接在打包apk的时候直接打包到apk中,携带在应用里面供应用访问,而且不会被编译成二进制;

     他们的不同点在于:1、assets中的文件资源不会映射到R中,而res中的文件都会映射到R中,所以raw文件夹下的资源都有对应的ID;2、assets可以能有更深的目录结构,而res/raw里面只能有一层目录;3、资源存取方式不同,assets中利用AssetsManager,而res/raw直接利用getResource(),openRawResource(R.raw.fileName),很多人认为是R.id.filename,其实正确的是R.raw.filename,就像R.drawable.filename一样,整体表示一个ID值,并非是R.id.filename;

    示例代码如下:

    1、res/raw:

                StringBuilder sb = new StringBuilder();
                InputStream in = null;
                in = getResources().openRawResource(R.raw.introduction);
                if (in != null) {
                    InputStreamReader isr = new InputStreamReader(in);
                    BufferedReader br = new BufferedReader(isr);
                    char [] buf = new char[1024];
                    int len = 0;
                    while ((len = br.read(buf)) > 0) {
                        sb.append(buf, 0, len);
                    }
                } else {
                    Log.e(TAG, "Read introduction file error");
                    return;
                }

    2、assets:

AssetManager assetManager = getAssets();//获取AssetManager
InputStream in = assetManager.open(fileName);

     


你可能感兴趣的:(Android工程的assets和res/raw目录解析)