AssetManager asset的使用

简介:

Android系统为每个新设计的程序提供了/assets目录,这个目录保存的文件可以打包在程序里。/res和/assets的不同点是,android不为/assets下的文件生成ID。如果使用/assets下的文件,需要指定文件的路径和文件名。下面这个例子,显示如何访问/assets下的内容。

在文件中/assets中建立/image子目录,将/res/drawable下的icon.png子目录拷贝到该目录中。在/assets子目录中建立readme.txt文件,文件中输入文本“hello,world!!!”

main.xml

<?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" 

    >
 
<TextView 
 
    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    />
 
    <EditText android:id="@+id/firstId" 

     android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    />
 
    <EditText android:id="@+id/secondId" 

     android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    />
 
 
 
</LinearLayout>

程序文件:

package com.cn.getassets;
 
import android.app.Activity;
 
import android.os.Bundle;
 
import java.io.ByteArrayOutputStream;
 
import java.io.IOException;
 
import java.io.InputStream;
 
importandroid.app.Activity ;
 
import android.content.res.AssetManager;
 
importandroid.os.Bundle ;
 
import android.util.Log;
 
import android.widget.EditText;
  
 
publicclass GetAssets extends Activity {
 
 private EditText firstField;
 
 private EditText secondField;
 
 @Override
 
 publicvoid onCreate(Bundle savedInstanceState) {
 
  super .onCreate(savedInstanceState);
 
//  Log.d("show main.xml","ok ");
 
  setContentView(R.layout.main );
 
  Log.d ("show main.xml","ok");
 
  AssetManager assetManager = getAssets();
 
  String[] files = null ;
 
  try {
 
   files = assetManager.list("image");
 
  } catch (IOException e) {
 
   Log.e ("tag", e.getMessage());
 
  }
 
  firstField = (EditText) findViewById(R.id.firstId );
 
  firstField.setText(Integer.toString (files.length)+"file.File name is"+ files[0]);
 
  InputStream inputStream = null ;
 
  try {
 
   inputStream = assetManager.open("readme.txt");
 
  } catch (IOException e) {
 
   Log.e ("tag", e.getMessage());
 
  }
 
  String s = readTextFile(inputStream);
 
  secondField = (EditText) findViewById(R.id.secondId );
 
  secondField.setText(s);
 
 }
 
 
 
 private String readTextFile(InputStream inputStream) {
 
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
  byte buf[] = new byte [1024];
 
  int len;
 
  try {
 
   while ((len = inputStream.read(buf)) != -1) {
 
    outputStream.write(buf, 0, len);
 
   }
 
   outputStream.close();
 
   inputStream.close();
 
  } catch (IOException e) {
 
  }
 
  return outputStream.toString();
 
 }
 
}


相关文章
|
2月前
|
Ubuntu Unix Linux
详细指导:Ubuntu镜像下载及系统安装全过程
安装Ubuntu系统并配置引导文件后,您已经成功地将Ubuntu添加到了您的计算机的多重启动选项中。至此,整个安装与配置过程已经全部完成。
|
11月前
|
监控 数据可视化 搜索推荐
轻松搞定项目管理!用对在线项目管理工具助你生产力翻倍!
在线项目管理通过互联网平台和相关软件工具,打破时空限制,实现项目全过程的高效管理。本文介绍了五款在线项目管理工具:板栗看板、MeisterTask、Slack、Microsoft Project 和 ClickUp,分别适用于不同场景和需求,如直观可视化、沟通协作、大型复杂项目和高度自定义等。
|
XML Java Android开发
14. 【Android教程】文本输入框 EditText
14. 【Android教程】文本输入框 EditText
1320 2
|
Java Go Android开发
Android——编译(三):android.bp的相关知识
Android——编译(三):android.bp的相关知识
1292 0
|
SQL Java Go
Gerrit使用教程
Gerrit使用教程
2045 0
Gerrit使用教程
|
缓存 JavaScript API
Vue-Router路由动态缓存组件(keep-alive),vue2/vue3不同写法
Vue-Router路由动态缓存组件(keep-alive),vue2/vue3不同写法
|
Java 关系型数据库 MySQL
Gradle中的依赖Dependencies说明与使用总结
Gradle中的依赖Dependencies说明与使用总结
796 0
mybatis-plus防止全表更新与删除
mybatis-plus防止全表更新与删除
273 0
mybatis-plus防止全表更新与删除
|
存储 安全 物联网
Android:Android 应用权限详解
这篇文章为大家系统的梳理一下 Android 权限相关的知识,在日常开发中,我们都用过权限,但是对于权限的一些细节我们可能掌握的还不够全面,这篇文章会全面的为大家介绍权限相关的知识。
2473 0
Android:Android 应用权限详解