1、从resource中的raw文件夹中获取文件并读取数据(可以自动生成资源ID)
案例:读取res/raw/f.txt ---- 文件内容:欢迎测试从resource中的raw文件夹中获取文件并读取数据;
并通过提示显示给用户;
代码如下:
/* 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资源目录下的资源文件,资源文件只能进行读,不能写;