我正在Android中开发文件管理器应用程序。在我的应用程序中,我有一个按钮,显示每个文件夹的文件数和文件夹数。我使用递归函数,我的函数除proc文件夹外。函数进入该文件夹的无限循环。
我猜这个文件夹中有临时文件,但我不知道如何处理这种情况。
我没有在日志中收到任何警告,但我在日志中看到了这条路径。
proc/self/task/20561/cwd/sys/devices/platform/omap/omap_l3_noc.0/subsystem/devices/power.0
我该如何处理这个临时文件?
我的功能:
private void iterate(String directory) {
File dir = new File(directory);
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
size = size + listFile[i].length();
if (listFile[i].isDirectory()) {
numberOfFolders++;
iterate(listFile[i].getAbsolutePath());
} else {
numberOfFiles++;
}
}
}
}
答案 0 :(得分:2)
避免/proc
/dev
(有时)和/sys
,你会没事的。 /proc
和/sys
肯定会有递归,我也在/dev
看过它们。
基本上避免所有虚假(什么是正确的单词?)文件系统。
你无法检测到这种递归(无论如何),因为你已经看到路径是递归的,它不像跟随..
然后回到父的子,两个不同的路径递归中的级别是不同的,其中./A/B/C
和./A/../A/../A/B/../B/./././C
在技术上是相同的。
BTW为什么要扫描这些文件?他们不是真的!你有什么用途可以扫描吗?
请把它放在问题中!
<强>附录强>
在终端中运行mount
,不要触摸任何非设备的内容。这肯定会有所帮助。 'cept /dev/pts
。
例如,我可以使用sshfs
将我的其他笔记本电脑的FS安装到这台笔记本电脑上,我可以将这台笔记本电脑的fs安装到我的电脑中,将我的电脑的fs安装到我的其他笔记本电脑上,如果我不小心扫描的话3台计算机的递归!