• 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>
  • 相关阅读:
    HDU Problem 1811 Rank of Tetris【拓扑排序+并查集】
    POJ Problem 2367 Genealogical tree【拓扑排序】
    HDU Problem 2647 Reward【拓扑排序】
    HDU Problem 1285 确定比赛名次【拓扑排序】
    HDU Problem HDU Today 【最短路】
    HDU Problem 3665 Seaside【最短路】
    HDU Problem 一个人的旅行 【最短路dijkstra】
    HDU Problem 1596 find the safest road【最短路dijkstra】
    Beyond Compare文本合并进行内容替换要注意什么
    用这些工具都可以比较代码的差异
  • 原文地址:https://www.cnblogs.com/gdpdroid/p/3658786.html
Copyright © 2020-2023  润新知