2013-06-05 54 views
5

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

+0

调查这些USB设备文件的好主意!如果你构建一个debug apk,你可以使用adb shell'run-as your.package.name'来获取一个shell作为应用程序的userid,然后当它运行时,在应用程序进程的/ proc条目中使用该shell的ls -l来检查fd链接,而不必从java中弄清楚如何实现。 –

回答

2

在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,或者在相同用户标识下运行的任何其他进程。

相关问题