Android资源文件使用小结(一)

Android中资源文件放置于res目录,经常使用的几种不再叙述,总结下不经常使用的几种,权作笔记,如有错误,敬请指正

1、res/raw目录
特点: 1、打包后会原封不动的保存在apk包中,不会被编译成二进制
2、res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.raw.filename
3、res/raw不可以有目录结构,也就说说raw目录内不能包含文件夹
4、单文件最大不能超过1M,如果大于1M可以采用zip压缩或者切割为几个小与1M的文件,具 体的示例有空会写下
资源的使用方式:
     InputStream is = getResources().openRawResource(R.raw.filename);
 会返回一个InputStream 流,具体示例如下:

    /**
     * 检查默认的 com.android.test_preferences.xml文件是否存在,不存在的话copy至对应目录
     * 
     * @author ***
     * @see onCreate()
     * @throws java.io.IOException
     */
    private void checkDefaultConfigFile() {
        String filename = "/data/data/" + getPackageName() + "/shared_prefs/com.android.test_preferences.xml.xml";
        Log.i(TAG, "checkDefaultConfigFile() filename = " + filename);
        File file = new File(filename);
        if (!file.exists() || !file.isFile()) {
            try {
                if (!file.getParentFile().exists() || !file.getParentFile().isDirectory()) {
                    file.getParentFile().mkdirs();
                }
                file.createNewFile();
                String command = "chmod 777 " + file.getAbsolutePath();
                Runtime runtime = Runtime.getRuntime();
                Process proc = runtime.exec(command);

                // !Warning 如果raw目录下的文件名称中包含多个".",会把第一个点后的文件都作为文件后缀,但是不影响文件读取
                InputStream is = getApplicationContext().getResources().openRawResource(R.raw.com);
                BufferedInputStream in = new BufferedInputStream(is);
                FileOutputStream out = new FileOutputStream(file);
                byte buffer[] = new byte[in.available()];
                int len = in.read(buffer);
                while (len != -1) {
                    out.write(buffer, 0, len);
                    len = in.read(buffer);
                }
                out.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

  2、res/xml目录

                 特点:     1、打包后会被编译成二进制
2、会被映射到R.java文件中,访问的时候直接使用资源ID即R.xml.filename
3、可以直接返回一个 XmlResourceParser 实例

资源的使用方式:
XmlResourceParser xml = getResources().getXml(R.xml.filename);
       3、assets目录

特点:     1、打包后会原封不动的保存在apk包中,不会被编译成二进制
        2、可以有目录结构,也就是assets目录下可以再建立文件夹
                        3、文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类
资源的使用方式:

		try {
			InputStream is = getAssets().open("filename");
		} catch (IOException e) {
			e.printStackTrace();
		}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值