2024年3月7日发(作者:)

方法1:

直接通过路径访问,只对网页有效。

String path = "file:///android_asset/文件名";

方法2:

通过AssetManager访问,得到数据流,然后将数据流转换为字节流进行操作

InputStream imgFile = ets().open("");

public static byte[] toByteArray(InputStream input) throws IOException {

ByteArrayOutputStream output = new ByteArrayOutputStream();

byte[] buffer = new byte[4096];

int n = 0;

while (-1 != (n = (buffer))) {

(buffer, 0, n);

}

return Array();

}

注意:

AndroidStudio中,assets目录应该放在src/main/下,而不是main/res/下,另外,请通过右键new来创建assets目录,而不是自己随意创建一个同名的目录。自己创建的同名目录运行的时候找不着。

assets可以有目录结构,也就是assets目录下可以再建立文件夹

AssetManager类

概述:

提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。通过getAssets()方法获取AssetManager对象。

AssetManager类常用方法:

Public Methods

final String[] list(String path)

返回指定路径下的所有文件及目录名。

final InputStream open(String fileName)

使用 ACCESS_STREAMING模式打开assets下的指定文件。.

final InputStream open(String fileName, int accessMode)

使用显示的访问模式打开assets下的指定文件.

应用实例

1.加载assets目录下的网页:

//加载assets/win8_Demo/目录下的网页

l("file:///android_asset/win8_Demo/");

说明:这种方式可以加载assets目录下的网页,并且与网页有关的css,js,图片等文件也会的加载。

2.访问assets目录下的资源文件:

(String filename),返回的是一个InputSteam类型的字节流,这里的filename必须是文件比如(;img/),而不能是文件夹。

3.获取assets的文件及目录名:

//获取assets目录下的所有文件及目录名,content(当前的上下文如Activity,Service等ContextWrapper的子类的都可以)

String fileNames[] =ets().list(path);

4.将assets下的文件复制到SD卡:

/**

* 从assets目录中复制整个文件夹内容

* @param context Context 使用CopyFiles类的Activity

* @param oldPath String 原文件路径 如:/aa

* @param newPath String 复制后路径 如:xx:/bb/cc

*/

public void copyFilesFassets(Context context,String oldPath,String

newPath) {

try {

String fileNames[] = ets().list(oldPath);//获取assets目录下的所有文件及目录名

if ( > 0) {//如果是目录

File file = new File(newPath);

();//如果文件夹不存在,则递归

for (String fileName : fileNames) {

copyFilesFassets(context,oldPath + "/" +

fileName,newPath+"/"+fileName);

}

} else {//如果是文件

InputStream is = ets().open(oldPath);

FileOutputStream fos = new FileOutputStream(new

File(newPath));

byte[] buffer = new byte[1024];

int byteCount=0;

while((byteCount=(buffer))!=-1) {//循环从输入流读取 buffer字节

(buffer, 0, byteCount);//将读取的输入流写入到输出流

}

();//刷新缓冲区

();

();

}

} catch (Exception e) {

// TODO Auto-generated catch block

tackTrace();

//如果捕捉到错误则通知UI线程

ptyMessage(COPY_FALSE);

}

}

5.使用assets目录下的图片资源:

InputStream is=getAssets().open("wpics/");

Bitmap bitmap=Stream(is);

geBitmap(bitmap);