如何在Android上使用文件描述符获取文件路径?

时间:2013-06-05 10:36:40

标签: java android file file-descriptor

我需要使用getFileDescriptor()返回的文件描述符来获取文件绝对路径。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

在Linux内核下运行的系统(即所有当前 Android实现)中,每个文件描述符都在/proc/[processid]/fd中有一个条目,它是指向目标的符号链接。文件描述符 - 不仅适用于常规文件,还适用于许多其他可能的目标,例如管道和套接字。

这是在Android设备上运行的cat > /mnt/sdcard/foo进程的部分示例

$ ls -l /proc/3528/fd
lrwx------ shell    shell             2013-06-06 10:31 0 -> /dev/pts/1
l-wx------ shell    shell             2013-06-06 10:31 1 -> /mnt/sdcard/foo
lrwx------ shell    shell             2013-06-06 10:31 2 -> /dev/pts/1
lrwx------ shell    shell             2013-06-06 10:31 6 -> socket:[188850]

阅读Java中的符号链接"留给读者做练习。

在桌面Linux上,有lsof工具可以浏览这些目录以查找所有进程并转出打开的文件列表 - 但是,这在使用Android的Android上不会太有用每个应用程序用户ID将限制这种拖钓。但您仍然可以查找属于您的应用程序本身的fd,或者在同一用户ID下运行的任何其他进程。