您的位置:首页 > 其它

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

2016-03-13 01:35 489 查看
先来大概看看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();

                }

            }

        });

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: