首页 > 其他 > 详细

Assets 读取assets中的文件

时间:2014-04-11 23:27:35      阅读:605      评论:0      收藏:0      [点我收藏+]

res/raw和assets的相同点:

1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。

res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

读取文件资源:

1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作

  • InputStream is = getResources().openRawResource(R.id.filename);  

2.读取assets下的文件资源,通过以下方式获取输入流来进行写操作

    • 获得AssetManger对象 AssetManager am = getAssets();  
    • 获得读取文件的输入流读取文件 InputStream inputStream=am.open(fileName);
    • 关闭AssetManger和inputStream; 

下面演示代码:

1.TestActivity.java

bubuko.com,布布扣
 1 import java.io.BufferedReader;
 2 import java.io.InputStreamReader;
 3 
 4 import android.app.Activity;
 5 import android.content.res.AssetManager;
 6 import android.graphics.Color;
 7 import android.os.Bundle;
 8 import android.view.View;
 9 import android.view.View.OnClickListener;
10 import android.widget.Button;
11 import android.widget.EditText;
12 
13 public class TestActivity extends Activity {
14     private Button btn;
15     private EditText editText;
16     private AssetManager am;
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         // TODO Auto-generated method stub
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.main);
22         editText=(EditText)findViewById(R.id.et);
23         editText.setBackgroundColor(Color.GRAY);
24         btn=(Button)findViewById(R.id.bn);
25         btn.setOnClickListener(new OnClickListener() {
26             
27             @Override
28             public void onClick(View v) {
29                 // TODO Auto-generated method stub
30                 //获得assetManger对象
31                 am=getAssets();
32                 editText.setText(fromAssets("hello.txt"));
33             }
34         });
35     }
36     private String fromAssets(String fileName){
37         /*
38          * 以下代码是重点代码,用途广泛,和文件下载的代码一样
39          */
40         StringBuffer sb=new StringBuffer();
41         String line=null;
42         BufferedReader buffer=null;
43         try{
44             //此段代码为了将inputStream包装为bufferedReader,方便调用bufferedReader的readLine方法
45             buffer=new BufferedReader(new InputStreamReader(am.open(fileName)));
46             while((line=buffer.readLine())!=null){
47                 sb.append(line);
48             }
49             
50         }catch(Exception e){
51             e.printStackTrace();
52         }finally{
53             try{
54                 //关闭am和buffer
55                 am.close();
56                 buffer.close();
57             }catch(Exception e){
58                 e.printStackTrace();
59             }
60         }
61         return sb.toString();
62     }
63 
64 }
bubuko.com,布布扣

2.main.xml

bubuko.com,布布扣
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="fill_parent"
 3     android:layout_height="fill_parent"
 4     android:orientation="vertical" >
 5     <EditText
 6         android:id="@+id/et"
 7         android:layout_width="fill_parent"
 8         android:layout_height="wrap_content"
 9         android:editable="false"
10         android:cursorVisible="false"
11         />
12     <Button
13         android:id="@+id/bn"
14         android:layout_width="fill_parent"
15         android:layout_height="wrap_content"
16         android:text="read"
17         />
18 </LinearLayout>
bubuko.com,布布扣

 

 

Assets 读取assets中的文件,布布扣,bubuko.com

Assets 读取assets中的文件

原文:http://www.cnblogs.com/gdpdroid/p/3658786.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!