10

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

4

1 回答 1

1

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

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

$ 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 上不会太有用,因为每个应用程序用户 ID 的使用会限制这种拖钓。但是您仍然可以查找属于您的应用程序本身的 fd,或在同一用户 ID 下运行的任何其他进程。

于 2013-06-06T14:32:19.150 回答