安卓读取raw文件夹下得txt文件
相信老哥们对raw文件夹不陌生:
res/raw文件夹下得内容会原封不动得打包进apk中,不会被编译成二进制文件。
还有一点就是res/raw文件夹不可以有目录结构。
使用:
res/raw下得文件会被映射到R.JAVA中,所以访问时我们可以通过R.id.filename来获取。在xml文件中你也可以通过@raw/得方 式来引用您想引用得文件。
Demo:读取res/raw下存放的一个text文件
Demo示例:
主要代码(对文件操作):
InputStream is = mContext.getResources().openRawResource(R.raw.disclaimer);//把文件转换为输入流
StringBuffer response = new StringBuffer(); //创建StringBuffer实例
BufferedReader br = new BufferedReader(new InputStreamReader(is)); //根据is创建缓冲字符输入流
String s = null; //创建s变量
try { //try语句捕获异常
while ((s = br.readLine()) != null) { //把这一行的值赋值给变量s,并判断是否有值
response.append(s); //把值添加进StringBuffer
response.append("\n"); //再添加一个换行符
}
} catch (IOException e) {
// TODO Auto-generated catch block //catch异常处理
e.printStackTrace(); //得到错误的实例, 调用方法在命令行打印程序出错的位置及原因
} finally { //finally try语句大多数情况下都会执行的代码块
try {
if (is != null) { //如果文件输入流不为空
is.close(); //调用close函数关掉输入流
}
if (br != null) { //如果缓冲字符输入流不为空
br.close(); //调用close函数关掉缓冲字符输入流
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Code_MainActivity:
package com.contentraw.contentraw;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
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 textview_content;
private ProgressBar mProgressBar;
private Context mContext = MainActivity.this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textview_content = (TextView) findViewById(R.id.textview_content);
mProgressBar = (ProgressBar) findViewById(R.id.mProgressBar);
setContentData();
}
private void setContentData() {
new AsyncTask<Void, Void, String>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
protected String doInBackground(Void... paramArrayOfParams) {
InputStream is = mContext.getResources().openRawResource(R.raw.disclaimer);
StringBuffer response = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s = null;
try {
while ((s = br.readLine()) != null) {
response.append(s);
response.append("\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
if (br != null) {
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return response.toString();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
mProgressBar.setVisibility(View.GONE);
textview_content.setText(result);
}
}.execute(null, null, null);
}
}
Demo直达下载通道
如有问题请多指正,您的指正使我更正确的前行.