
android通过jni实现调用c或c++读取assets下的文件
新建android工程
新建java上层方法
在工程中新建 cnlandsemjnistudy 包,
在其中新建TestManager类用于调用本地C/C++方法
AssetManager assetManager = getAssets();
String[] files = assetManagerlist("image"); //表示获取assets/image目录下的所有文件
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManagerlist("");
} catch (IOException e) {
Loge("tag", egetMessage());
}
再去用File判断是文件、还是目录
assets目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制,assets目录下可以再建立文件夹,assets文件夹下的文件不会被映射到Rjava中,访问的时候需要AssetManager类
InputStream in = getResources()getAssets()open(fileName);
//获取文件的字节数
int lenght = inavailable();
可以通过这个方法来找到是否有你要的那个文件:String[]list=null;list=getResources()getAssets()list("abc");它返回的是在assets文件夹下abc文件夹中文件的文件名的列表。再去检查list中是否有你需要的文件。读取abc文件夹中的文件的时候只需:InputStreamin=getResources()getAssets()open("abc/yantxt");//不需要加“assets”
在android中不能直接打开res
aw目录中的数据库文件,
而需要在程序第一次启动时将该文件复制到手机内存或sd卡的某个目录中,
然后再打开该数据库文件。复制的基本方法是使用getresources()openrawresource方法获
得res
aw目录中资源的
inputstr
AndroidStudio中放置assets文件夹需要手动创建,我以存放一张为例说明。新建一个项目,切换到当前的Module,在main文件夹下新建一个名为“assets”文件夹如下图:复制资源(这里以为例),粘贴到“assets”文件夹下,如下图:在AndroidStudio里以
输入流
的方式读取资源,部分代码如下://从assets中读取,其它资源读取方式类似AssetManager
am
=
resgetAssets();try
{
is
=
amopen("pic_assetspng");}
catch
(IOException
e)
{
eprintStackTrace();}Bitmap
bmp
=
BitmapFactorydecodeStream(is);
以上就是关于android通过jni调用c或c++读取assets下的文件吗全部的内容,包括:android通过jni调用c或c++读取assets下的文件吗、android 怎么获取assets文件转换成二进制数据、android assets文件夹下的子文件夹名字怎么获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)