我需要使用getFileDescriptor()返回的文件描述符获得文件绝对路径。我该怎么做呢?
在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上不会太有用,因为每个应用程序的userid的使用会限制这种trolling。但是你仍然可以查找属于你的应用程序本身的fd,或者在相同userid下运行的任何其他进程。