第一个小应用:图片浏览器 之二 学会Assets、raw中的文件的读取

先来大概看看Assets在Android  stuido中怎么创建的吧:

右键app  >> new >> Folder >> Assets Folder   起个名字,然后下一步下一步


     Android应用除了res目录用于存放资源外,assets目录也用于存放资源,一般来说,assets目录存放的资源代表应用无法直接访问的原生资源,应用需要通过AssetManager以二进制的形式来读取资源。而res目录下的资源,SDK会在编译该应用的时候自动在R.java文件中为这些资源创建索引,程序可以通过R资源清单类进行访问。

访问assests:  getResources().getAssets().open(FILE_NAME); 

访问res:比如:setContentView(R.layout.activity_main);                

关于raw的文件读取:           getResources().openRawResource(R.id.raw下的文件名)        它的操作数据的方法可以参考下面的代码


准备工作:

在 assets 目录中创建一个文件   名字叫   ”Info“

里面贴上几行文字  

主布局界面里面是:一个Button按钮,一个textView,当启动Button的时候,我们把  Info文件中的信息读取到 textView中

布局页面:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.wang.myassets.MainActivity">


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="hello"
        android:id="@+id/tvInfo"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="把信息输入到上面的view中"
        android:id="@+id/btnInputInfo"
        android:layout_below="@+id/tvInfo"/>
</RelativeLayout>


MainActivity.java

package com.wang.myassets;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
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 {
    private TextView tvInfo;
    public static final String FILE_NAME = "Info";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvInfo = (TextView) findViewById(R.id.tvInfo);


        findViewById(R.id.btnInputInfo).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    InputStream is =  getResources().getAssets().open(FILE_NAME);
                    //InputStream 返回的是字节流,当读取的是文本文件时,需要把字节流包装成字符流
                    //需要注意的是,一定要加上编码方式,防止出现乱码

                    InputStreamReader isr = new InputStreamReader(is,"UTF-8");
                    //接着封装成BufferedReader  它是一个缓冲区,可以通过 readLine()来获取一行
                    BufferedReader bfr = new BufferedReader(isr);
                    String in = "";
                    StringBuilder builder = new StringBuilder();
                    while ((in = bfr.readLine()) != null){
                    //每读一行文字,就把这行文字放到builder中
                        builder.append(in);
                        //因为readLine()不会读换行符,所以,每次都添加一个换行保持格式
                        builder.append("\n");
                    }
                    tvInfo.setText(builder);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值