2 hooych hooych 于 2014.11.26 11:55 提问

android遍历根目录遇到link文件造成死循环

android递归遍历根目录(/)时, 子目录下遇到link文件(->)指向上层目录, link文件被识别为上层目录, 递归造成死循环

public static void scanDirectory()
    {
        scanFile(new File("/"));
    }

    public static void scanFile(File file)
    {
        if (null == file)
            return;
        if (file.isDirectory())
        {
            File[] files = file.listFiles();
            if (null == files)
                return;
            else
                for (File f : files)
                    scanFile(f);
        } else {
            Log.i("FILE", file.getPath());
        }
    }

目录结构:
alt text

执行结果:
alt text

1个回答

dxjwolf
dxjwolf   Rxr 2014.11.26 19:31
已采纳

用getCanonicalPath()还有getAbsolutePath()的返回值来比对
普通的文件 两个函数的返回是一样的
如果是link文件 前一个函数返回的是实际文件的路径 后一个函数返回的是链接文件的路径(所指向的路径)

hooych
hooych 多谢,完美解决了我的问题
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
json传递死循环问题
可能有时我们需要将某个对象要传给前端,但是因为可能会有互相引用的情况出现,这是json使用所必须面对的。有三个方案, 方案1:写个bean,将相互引用的给去掉。 方案2:用注解将不用的注掉。 方案3:用filter来实现。将不必要的给filter掉。代码实现: private ObjectMapper objectMapper; /** * 过滤属性 * * <
在数据库查询时遇到死循环查询问题
近日,在程序调试时,明明结果集只有两条记录的情况下,执行 查询语句却会一直显示正在执行SQL命令,陷入不能停止的查找状态。 最开始,我还怀疑是不是自己语句写错,后来敢十分肯定语句完全是对的。那么此时我就纠结到抓狂。 经过一番思考,我重新关闭plsql。再次打开查询时,突然就好了。最后,我确定是以下问题; 数据库重复查询时,由于某个原因锁表了。此时的我感觉略无语啊,我们遇到问题总是会陷入程序有
遍历list 造成的死循环
一.遍历list造成的死循环 源码:List&amp;lt;Student&amp;gt; students = new ArrayLIst&amp;lt;&amp;gt;();(list里面有三个对象值)         for(int I=0;i&amp;lt;students.size();I++){       Student  student = students.get(I);          if(I==2){     ...
为什么Looper.loop()死循环不会导致ANR
为什么loop这个死循环会在主线程执行,不会ANR么? 答:最开始Android的入口ActivityThread里面的main方法,里面有一个巨大的Handler,然后会创建一个主线程的looper对象,这也是为什么直接在主线程拿Handler就有Looper的原因,在其他线程是要自己Looper.prepare()的。 其实整个Android就是在一个Looper的loop循环的,整个An...
hashmap死循环原因总结
本文受http://pt.alibaba-inc.com/wp/dev_related_969/hashmap-result-in-improper-use-cpu-100-of-the-problem-investigated.html 的启发,引用了其中的思想,对此表示感谢。          来到杭州实习有一段日子了,很长时间都没有更新博客了,前几天,闲来无事,随便翻了一本书,毕玄的《
hashmap造成死循环
转载地址:http://www.cnblogs.com/alexlo/p/4955391.html 注:public V put(K key, V value) { ...... //算Hash值 int hash = hash(key.hashCode()); //会出现相同hash值 int i = indexFor(hash, table.length);
(原创)android 遍历删除目录下所有文件
前言 清除目录下所有文件想必很多地方都会用到,也就编写一下。 代码 File file = new File(path); if (!file.exists()) return false; if (file.isFile()) { file.delete(); return true;
一个读取android根目录下的文件夹或文件
一个读取android根目录下的文件夹或文件 private String searchFile(String keyword) { String result = ""; File[] files = new File("/system/media/audio/ui").listFiles(); for (File file : files) { if(file.getName
遍历所有磁盘根目录及次级目录,查找目标文件夹
需求:         目标文件夹:    包含Task.rec文件。         假定:              目标文件夹只存放在磁盘根目录及次级目录下。         参数:              strlist &tasks —— 保存检索到的目标文件夹路径。         返回:              目标文件夹的路径集合。Task.rec中包
为什么Android程序中的Looper.loop()不会造成ANR异常
为什么Android程序中的Looper.loop()不会造成ANR异常标签(空格分隔): 菜鸟 android 作者:陈小默我们在学习Handler的时候一定都接触过Looper这个东西,也知道其中的loop方法会有阻塞等待的过程。那么问题来了:既然主线程被阻塞了,为什么不会造成ANR异常呢?首先这个问题就是错误的,至少有两个概念没有认清:第一,什么是ANR异常?;第二,Android程序阻塞的