• Assets 读取assets中的文件


    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

     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 }

    2.main.xml

     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>
  • 相关阅读:
    python3内置函数大全
    字符串格式化及函数
    基础数据和编码
    python基本数据类型
    python基础
    python re模块
    python json模块
    python os模块
    python random模块
    python time模块
  • 原文地址:https://www.cnblogs.com/gdpdroid/p/3658786.html
Copyright © 2020-2023  润新知