android 文件读取(assets)

assets文件夹资源的访问

       assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
      1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
      2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。 
      3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
      4.调用AssetManager.close() 关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作
以下为从Raw文件中读取:
代码

public String getFromRaw(){ 
            try { 
                InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) { 
                e.printStackTrace(); 
            }             
    } 

  以下为直接从assets读取
代码
public String getFromAssets(String fileName){ 
            try { 
                 InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) ); 
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) { 
                e.printStackTrace(); 
            }
    } 
   
当然如果你要得到内存流的话也可以直接返回内存流!
接下来,我们新建一个工程文件,命名为AssetsDemo。

然后建立一个布局文件,如下,很简单,无需我多介绍,大家一看就明白。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/lookbg"
    >

<ScrollView android:layout_width="fill_parent"
		android:layout_height="fill_parent">

	<TextView  
		android:id="@+id/tv1"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content"/>
	    
 </ScrollView>
</LinearLayout>


然后呢,我从网上找了段文字,存放在assets文件目录下,取名为health.txt 这就是今天我们要读取的文件啦。
这个.txt文件,我们可以直接双击查看。如下所示。

1 、巧用牙膏:若有小面积皮肤损伤或烧伤、烫伤,抹上少许牙膏,可立即止血止痛,也可防止感染,疗效颇佳。  

2 、巧除纱窗油腻:可将洗衣粉、吸烟剩下的烟头一起放在水里,待溶解后,拿来擦玻璃窗、纱窗,效果均不错。  

3 、将虾仁放入碗内,加一点精盐、食用碱粉,用手抓搓一会儿后用清水浸泡,然后再用清水洗净,这样能使炒出的虾仁透明如水晶,爽嫩可口。  

4 、和饺子面的窍门1:在1斤面粉里掺入6个蛋清,使面里蛋白质增加,包的饺子下锅后蛋白质会很快凝固收缩,饺子起锅后收水快,不易粘连  

5 、将残茶叶浸入水中数天后,浇在植物根部,可促进植物生长;把残茶叶晒干,放到厕所或沟渠里燃熏,可消除恶臭,具有驱除蚊蝇的功能。  

6 、夹生饭重煮法:如果是米饭夹生,可用筷子在饭内扎些直通锅底的孔,洒入少许黄酒重焖,若只表面夹生,只要将表层翻到中间再焖即可。  

7 、烹调蔬菜时如果必须要焯,焯好菜的水最好尽量利用。如做水饺的菜,焯好的水可适量放在肉馅里,这样即保存营养,又使水饺馅味美有汤。  

8 、炒鸡蛋的窍门:将鸡蛋打入碗中,加入少许温水搅拌均匀,倒入油锅里炒,炒时往锅里滴少许酒,这样炒出的鸡蛋蓬松、鲜嫩、可口。  

9 、如何使用砂锅1:新买来的砂锅第一次使用时,最好用来熬粥,或者用它煮一煮浓淘米水,以堵塞砂锅的微细孔隙,防止渗水。  

10 、巧用“十三香”:炖肉时用陈皮,香味浓郁;吃牛羊肉加白芷,可除膻增鲜;自制香肠用肉桂,味道鲜美;熏肉熏鸡用丁香,回味无穷。
……


 

接下来,就是今天的重头戏,Android读取文件的核心代码。就直接贴代码了。

 

package com.assets.cn;
import java.io.InputStream;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
public class AssetsDemoActivity extends Activity {
	public static final String ENCODING = "UTF-8";
	TextView tv1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
		tv1 = (TextView)findViewById(R.id.tv1);
		tv1.setTextColor(Color.BLACK);
		tv1.setTextSize(25.0f);
		tv1.setText(getFromAssets("health.txt"));
	}
	
	//从assets 文件夹中获取文件并读取数据
	public String getFromAssets(String fileName){
	    String result = "";
		    try {
				InputStream in = getResources().getAssets().open(fileName);
				//获取文件的字节数
				int lenght = in.available();
				//创建byte数组
				byte[]  buffer = new byte[lenght];
				//将文件中的数据读到byte数组中
				in.read(buffer);
				result = EncodingUtils.getString(buffer, ENCODING);
			} catch (Exception e) {
				e.printStackTrace();
			}
			return result;
	}
}


 

这里是mainfest文件。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.assets.cn"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
	
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".AssetsDemoActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>


 

最后,我们运行一下程序。

源码下载地址: http://pan.baidu.com/s/1qW6XNU8
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值