OpenHarmony开发者论坛
标题:
resourceManager.getRawFd(文件路径.txt)得到的fd是什么?
[打印本页]
作者:
深开鸿_王石
时间:
2024-3-6 14:01
标题:
resourceManager.getRawFd(文件路径.txt)得到的fd是什么?
[md]用getRawFd得到的资源文件FD,传到nativec++程序,用fstat获取fileinfo,答应出ino
```
struct stat fileinfo;
if (fstat(callbackData->fd, &fileinfo) == -1) {
OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "ResfdExecuteCB fstat failed!");
return;
}
```
```
ResfdExecuteCB fileinfo.stsize:1380131!
ResfdExecuteCB fileinfo.ino:26939!
ResfdExecuteCB fileinfo.mode:33188!
ResfdExecuteCB fileinfo.dev:66352!
```
然后通过查找发现,这个ino是 /data/app/el1/bundle/public/com.example.asyncandfd/entry.hap
stat 此文件发现:
File: /data/app/el1/bundle/public/com.example.asyncandfd/entry.hap
Size: 1380131 Blocks: 2696 IO Blocks: 512 regular file
Device: 10330h/66352d Inode: 26939 Links: 1 Device type: 0,0
Access: (0644/-rw-r--r--) Uid: ( 3060/installs) Gid: ( 3060/installs)
Access: 2024-03-06 11:46:56.100253412 +0800
Modify: 2024-03-06 11:46:56.116253412 +0800
Change: 2024-03-06 11:46:56.116253412 +0800
对应的文档:
getRawFd(path: string): Promise<RawFileDescriptor>
[@ohos.resourceManager (资源管理) (openharmony.cn)](
https://docs.openharmony.cn/page ... resource-manager.md
)
下面这个图片下载后改后缀为zip为测试工程
![asyncAndFd.jpg](
https://forums-obs.openharmony.c ... arhzr2a3pttcard.jpg
"asyncAndFd.jpg")
[/md]
作者:
s_hao
时间:
2024-3-18 14:43
由于hap没有解压,所以获取到的fd是hap包的fa,一起返回的还有offset和length,用这三者就可以读取文件了
作者:
深开鸿_王石
时间:
2024-3-19 14:19
回复
s_hao
: 这拿的是hap包的句柄,不是rawfile的,所以读出来的是错的哇
作者:
s_hao
时间:
2024-3-20 10:11
回复
深开鸿_王石
: 返回的offset和length就是rawfile的,读fd的时候用那两个参数读出来的就是rawfile了
作者:
深开鸿_王石
时间:
2024-3-21 10:15
回复
s_hao
: 明白了,用fd开文件,用offset算偏移,然后在用len读,是吧
那我还好奇啊,为啥在CPP里用这个OH_ResourceManager_OpenRawFile就可以得到正确的fd呢?这个和arkui里的接口就为啥不同了呢?
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5