Android Studio 中 assets目录的使用

来源:互联网 发布:云端是什么软件 编辑:程序博客网 时间:2024/05/17 07:20

项目中存放音频图片等资源,我把需要的资源放在了assets目录下,今天看了看官方文档,做个总结,希望对大家有所帮助。

1.Android Studio assets文件夹在哪里?

路径:app/src/main/assets app是我们的Module名称
注意:android Studio在创建新的项目的时候是没有assets目录的,需要我们重新创建。

app/    build/      libs/              src/        main/            assets/                abc.mp3            java/            res/                drawable/                      icon.png                  layout/                      main.xml                raw/                            values/                      strings.xml 

2. assest文件夹里放文件,对于文件的大小有没有限制?

在官方的文档中没有看到相关的说明,亲自测了一下放个4.5M的音频是没有问题的。下面是官方官方文档在介绍raw目录的同时给出的assets目录使用说明:
raw/    Arbitrary files to save in their raw form. To open these resources with a raw InputStream, call Resources.openRawResource() with the resource ID, which is R.raw.filename.However, if you need access to original file names and file hierarchy, you might consider saving some resources in the assets/ directory (instead of res/raw/). Files in assets/ are not given a resource ID, so you can read them only using AssetManager.

意思是说raw目录中的文件会生成ID,可以通过R.raw.filename直接调用
而assets目录下的文件则需要通过路径名称去引用。因此在assets目录下我们依然可以创建子目录。

3.怎样读物assets目录下的文件

在上面的文档中我们看到,我们只能通过AssetManager类去读去assets目录下的文件。
我们可以通过open(String filename)方法获取流InputStream,然后写入。

final InputStream   open(String fileName)                    Open an asset using ACCESS_STREAMING mode.public void readFromAssets(String fileName){      try {          InputStream in = getAssets().open(fileName);          readTextFile(in);      } catch (IOException e) {          e.printStackTrace();      }  }  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();  }  

3.app安装在手机后,assets目录下的文件路径是什么?

/data/data/应用包名/lib/assets
0 0