我需要使用getFileDescriptor()返回的文件描述符来获取文件绝对路径。 我该怎么办?
答案 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下运行的任何其他进程。