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

File:通过文件存储数据;

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资源目录下的资源文件,资源文件只能进行读,不能写;

相关推荐