android通过jni调用c或c++读取assets下的文件吗

android通过jni调用c或c++读取assets下的文件吗,第1张

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文件夹下的子文件夹名字怎么获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9760282.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存