学而实习之 不亦乐乎

Android 中 AssetManager 的使用

2023-09-07 06:53:18

AssetManager 提供对应用程序的原始资产文件的访问权限; 有关大多数应用程序想要检索其资源数据的方式,请参阅Resources 。 该类提供了一个较低级别的API,允许您打开并读取已与应用程序捆绑在一起的原始文件作为简单的字节流。

一、基本用法

1、创建assets目录

在项目的 src/main 目录下新建 assets 目录。

2、获取AssetManager

AssetManager assetManager = context.getAssets();

3、列出assets文件夹下全部文件

String[] filePathList = assetManager.list("");

4、打开某个文件

InputStream is = assetManager.open("test.txt");

5、获取到InputStream后,就能够通过IO库进行文件操作了。或者通过BitmapFactory.decodeStream(is)得到Bitmap对象

AssetManager相关方法

  • list:列出指定目录下的文件与文件夹列表数组。
  • open:打开资产文件,返回输入流InputStream对象。访问模式默认是AssetManager.ACCESS_STREAMING,表示流式访问,即顺序读取。
  • close:关闭资产管理器。

二、实例

1、从assets文件夹获取文字字符串示例

/**
 * 从asset资产文件中获取文本字符串
 * @param context
 * @param fileName
 * @return
 */
public static String getTxtFormAssets(Context context,String fileName){
    String result = "";

    try {
        InputStream is = context.getAssets().open(fileName);
        int lenght = is.available();
        byte[] buffer = new byte[lenght];
        is.read(buffer);
        result = new String(buffer,"utf8");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}

2、从assets文件夹获取图片示例

/**
 * 从asset资产文件中获取位图对象
 * @param context
 * @param fileName
 * @return
 */
public static Bitmap getImgFromAssets(Context context,String fileName){
    Bitmap bitmap = null;
    try {
        InputStream is = context.getAssets().open(fileName);
        bitmap = BitmapFactory.decodeStream(is);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return bitmap;
}