在Android中,有了文件描述符,如何在C NDK中使用fopen打开文件?

问题描述 投票:0回答:1

在 Android 中从文件选择器获取文件 URI(基于此:https://developer.android.com/training/data-storage/shared/documents-files)后,我现在尝试打开该文件来自 C 中的 NDK 和 fopen 函数。我可以使用以下代码访问“文件描述符”:

ParcelFileDescriptor pfd = getActivity().getContentResolver().
            openFileDescriptor(uri, "w");
pfd.getFileDescriptor();

我不清楚文件描述符是什么。我可以从中获取文件路径吗?

C 代码也有读取该文件的权限吗?文档指出,获得的 URI 被授予权限,无需任何额外权限:“因为用户参与选择您的应用程序可以访问的文件或目录,所以此机制不需要任何系统权限”。

那么,知道文件描述符后,如何才能获取文件路径,然后在 fopen 中使用它呢?

android android-ndk
1个回答
0
投票

您可以从Java代码中获取unix的文件描述符,然后通过以下方式将其传递给本机代码:

ParcelFileDescriptor pfd = getApplicationContext().getContentResolver().
                            openFileDescriptor(uri, "r");
                    int f = pfd.detachFd();

它不能与 getFD() 一起使用; 然后您可以使用 fdopen 或在本机代码中编写函数。

© www.soinside.com 2019 - 2024. All rights reserved.