Android 之 使用流读取资源文件中的数据

本文详细介绍了如何在应用中从resource和assets目录中读取文件,并展示了从raw文件夹中获取文件并读取数据的示例,以及如何在assets目录下读取文件数据的方法。同时提供了编码转换的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=small][color=olive][b]File:通过文件存储数据;

1、从resource中的raw文件夹中获取文件并读取数据(可以自动生成资源ID)

案例:读取res/raw/f.txt ---- 文件内容:欢迎测试从resource中的raw文件夹中获取文件并读取数据;
并通过提示显示给用户;

代码如下:[/b][/color][/size]
	/* File  */
/* 测试:从raw对资源文件进行数据的读取,并显示 */
OnClickListener listerner_raw = new OnClickListener() {

public void onClick(View v) {
String temp = null;
try{
/* 获取流的对象 InputStream *//* 理解:通道建立 */
InputStream in = getResources().openRawResource(R.raw.f);

/* 获取文件的大小(字节数) */
int length = in.available();

/* 创建一个byte数组, 用于装载字节信息 */
byte[] buffer = new byte[length];

/* 开始读取文件read(); *//* 解释:将读取到的字节放入到buffer这个数组中 */
in.read(buffer);

/* 编码的转换三种类型:UTF-8 UNICODE BIG5 *//**/
temp = EncodingUtils.getString(buffer, "UTF-8");
//temp = EncodingUtils.getString(buffer, "UNICODE");
//temp = EncodingUtils.getString(buffer, "BIG5");
//temp = EncodingUtils.getString(buffer, "ANST");


/* 通过String 的构造方法,将字节数组构建成字符串 */
//String temp = new String(buffer);

/* 流的关闭close(); */
in.close();

Toast.makeText(MainActivity.this, temp.toString(), 1000).show();

}catch(Exception ex){
ex.printStackTrace();
}

}
};

2、从assets中获取文件并读取数据;(不能生成资源ID)

案例:在assets中有一个f.txt文件,读取文件中的数据
代码:
/* 测试:从assets中对文件进行读取 */
OnClickListener listener_assets = new OnClickListener() {

public void onClick(View v) {
String temp ="";
try{
/* 获取流的对象,建立通道 */
InputStream in = getResources().getAssets().open("f.txt");

/* 获取文件的大小(字节数) */
int length = in.available();

/* 创建一个byte数组, 用于装载字节信息 */
byte[] buffer = new byte[length];

/* 开始读取文件read(); *//* 解释:将读取到的字节放入到buffer这个数组中 */
in.read(buffer);

/* 编码的转换三种类型:UTF-8 UNICODE BIG5 *//* 编码的选择根据f.txt文件的编码类型进行调整 */
//temp = EncodingUtils.getString(buffer, "UTF-8");
//temp = EncodingUtils.getString(buffer, "UNICODE");
//temp = EncodingUtils.getString(buffer, "BIG5");


/* 通过String 的构造方法,将字节数组构建成字符串 */
//temp = new String(buffer);

/* 流的关闭close(); */
in.close();

}catch(Exception ex){
ex.printStackTrace();
}
Toast.makeText(MainActivity.this, temp+"", 1000).show();
}
};



小贴士:
* 以上两种情况是在res资源目录下的资源文件,资源文件只能进行读,不能写;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值