通过Uri加载raw目录下的文件

开发
在开发过程中,有些文件可能需要原封不动的打包到apk中,比如一些特殊的图片或者数据库文件等,Android提供了两个文件夹可以保存原始文件。

在开发过程中,有些文件可能需要原封不动的打包到apk中,比如一些特殊的图片或者数据库文件等,Android提供了两个文件夹可以保存原始文件,一个是 assets 文件夹,另一个是res目录下的raw文件夹。

区别

raw目录通常用于存储原始的、未经处理的文件,例如文本文件、数据文件、配置文件等。这些文件会被映射到R.java文件中,访问的时候可以通过使用资源ID即R.raw.filename。

assets目录通常用于存储需要在网页或应用程序中使用的资源文件,例如图片、音频、视频等。这些文件可能需要在网页中引用或在应用程序中加载和显示。文件不会被映射到R.java中,访问的时候需要AssetManager类。

读取文件

// 读取raw目录中的文件
InputStream inputStream = getResources().openRawResource(R.raw.filename);

// 读取assets目录中的文件
InputStream inputStream = getAssets().open("filename");

其中R.raw.filename是raw目录中的文件的引用,而"filename"是assets目录中的文件名。

「通过Uri获取raw目录文件」有的时候我们可能需要从Uri来获取这些文件

// 获取uri
Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.packageName + "/raw/" + fileName);
// 获取文件流
InputStream inputStream = getResolver().openInputStream(uri);

「通过File获取assets目录文件」assets目录下的文件有绝对路径,比如文件assets/images/image.jpg

String path = "file:///android_asset/images/image.jpg";    // 路径

File file = new File(path);
责任编辑:赵宁宁 来源: 沐雨花飞蝶
相关推荐

2012-12-28 14:28:26

Android开发

2009-12-08 12:06:03

linux当前目录文件数

2017-06-09 13:51:42

Linux命令删除文件

2012-05-07 13:13:03

Python

2011-05-17 10:04:18

Python

2013-04-03 12:57:01

Android开发读写assets目录下

2009-11-02 10:19:40

VB.NET List

2011-02-25 11:06:45

Proftpf

2013-08-23 09:19:57

Cryptkeeper加密

2011-03-25 11:28:34

Cactirra目录

2011-09-07 09:44:32

SQL Server还原

2016-10-13 08:35:00

SSHFSSSHLinux

2013-10-10 13:05:46

Windows 7微软更新

2011-01-11 14:17:29

Linux文件目录

2016-11-15 09:27:37

Linux删除文件

2020-05-28 08:29:54

目录脚本测试

2022-05-06 18:55:29

Java技巧Shellcode

2024-01-29 17:02:10

数据治理大数据数据工程

2021-11-02 09:14:14

Windows 11操作系统微软

2011-08-24 17:19:00

raw中文man
点赞
收藏

51CTO技术栈公众号