欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-27 17:36:14
...
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资源目录下的资源文件,资源文件只能进行读,不能写;