先来大概看看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();
}
}
});
}
}