首页 > 代码库 > android读取Resources中内容
android读取Resources中内容
android中资源是只读的,不可写。
下面我们来读取Assets目录和res/raw目录下的文本文件到TextView中,首先要做的就是将文件放入到这两个文件夹里
在activity_main.xml中放入两个TextView来显示文本内容
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.ssln.fileresources.MainActivity" > <TextView android:id="@+id/tvRaw" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tvAssets" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
然后在mainactivity.java中封装了2个方法,分别读取两个目录下的内容,一种是获取内容大小,然后直接读取到缓冲区,另外一种是逐行读取文件内容
package com.ssln.fileresources;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.apache.http.util.EncodingUtils;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity { private final String Encoding = "utf-8"; // 文件编码 private final String fileName = "text.txt"; // 文件名 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tvAssets = (TextView) findViewById(R.id.tvAssets); TextView tvRaw = (TextView) findViewById(R.id.tvRaw); tvAssets.setText(ReadFromAssets()); tvRaw.setText(ReadFromRaw()); } /** * 读取Assets目录下的文件 * * @return */ private String ReadFromAssets() { String retStr = ""; try { // 打开文件到流 InputStream inStream = getResources().getAssets().open(fileName); // 获取长度 int fileLen = inStream.available(); // 放入缓冲区 byte[] buffer = new byte[fileLen]; inStream.read(buffer); // 转码到文本 retStr = EncodingUtils.getString(buffer, Encoding); //关闭 inStream.close(); } catch (IOException e) { e.printStackTrace(); } return retStr; } /** * 读取Raw目录下文件 * * @return */ private String ReadFromRaw() { String retStr=""; try { InputStream inStream=getResources().openRawResource(R.raw.text); //这里我们使用另外一种读取方法,逐行读取内容 BufferedReader br=new BufferedReader(new InputStreamReader(inStream)); String tempStr=""; while((tempStr=br.readLine())!=null) { retStr+=tempStr+"\r\n"; Toast.makeText(this, tempStr, Toast.LENGTH_SHORT).show(); } } catch(IOException e) { e.printStackTrace(); } return retStr; }}
我们看下效果
??? 为毛是乱码尼?因为我们在上面读取的编码方式是utf-8的
private final String Encoding = "utf-8"; // 文件编码retStr = EncodingUtils.getString(buffer, Encoding);
肿么办?我们从新用记事本来存储下文件为utf-8就好了
在来看看效果
android读取Resources中内容
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。