Android 读取 raw 和 assets 目录

大家应该对 rawassets 两个文件夹不陌生吧,如果我们不想自己的文件被编译成二进制文件的话, 我们可以把文件放到这两个目录下

目录 说明
res/raw 文件会被映射到 R.java 文件中,访问的时候直接通过资源 ID 即可访问,但它不能有目录结构,就是不能再创建文件夹
assets 不会映射到 R.java 文件中,通过 AssetManager 来访问,能有目录结构,即可以自行创建文件夹

读取文件资源

res/raw

InputStream is = getResources().openRawResource(R.raw.filename);

assets

AssetManager am =  getAssets();  
InputStream is = am.open("filename");

范例

  1. 创建一个 空的 Android 项目 cn.twle.android.ReadAssets

  2. app 上点右键,选择 NEW -> Folder-> Assets Folder 创建 assets 目录

  3. res 目录下添加(创建) raw 资源目录

  4. app/assets 目录下新建文件 site.txt 并输入一下内容

    简单教程的网址是:https://www.twle.cn
    
  5. res/raw 目录下新建文件 slogan.txt 并输入一下内容

    简单教程的 slogan 是: 简单教程,简单编程
    
  6. 修改 activity_main.xml 添加两个 TextView

    <?xml version="1.0" encoding="utf-8" ?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/ms_site_url"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <TextView
            android:id="@+id/ms_slogan"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
    
  7. 修改 MainActivity.java 读取 site.txtslogan.txt 并显示

    package cn.twle.android.readassets;
    
    import android.content.res.AssetManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            TextView ms_site_url = findViewById(R.id.ms_site_url);
            TextView ms_slogan = findViewById(R.id.ms_slogan);
    
            try {
                InputStream is = getResources().openRawResource(R.raw.slogan);
                BufferedReader in = new BufferedReader(new InputStreamReader(is,"UTF-8"));
    
                ms_slogan.setText(in.readLine());
    
                is.close();
                in.close();
    
                AssetManager am =  getAssets();
                is = am.open("site.txt");
                in = new BufferedReader(new InputStreamReader(is,"UTF-8"));
    
                ms_site_url.setText(in.readLine());
    
                is.close();
                in.close();
            }catch (IOException e){}
        }
    }
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.