Android File.listFiles不显示目录中的所有文件

时间:2010-08-05 11:12:19

标签: android

我正在使用Android Emulator 2.2版本来开发一个小应用程序。我应该列出目录下的所有图像文件(jpg)文件。我通过ADB puash命令将文件复制到“/ data”。

示例:/data/1.jpg

现在我创建一个File对象,将目录路径作为输入并调用listFiles api。

File dir = new File(dirPath);
File[] filelist = dir.listFiles();

但是fileList不包含图像文件(1.jpg)。

但奇怪的是,如果我使用硬编码路径“/data/1.jpg”创建一个ImageView,我可以看到图像被绘制。

有人可以帮助我......可能是问题所在

谢谢, Kowndinya


public int PopulateList(final String dirPath)
{
    m_CurrentDirectory = new File(dirPath);
    _namelist.clear();
    _pathlist.clear();

    File[] fileList = m_CurrentDirectory.listFiles(imFilter);
    if (fileList != null)
    {
        for ( int i = 0;i<fileList.length;i++)
        {
            _namelist.addElement(fileList[i].getName());
            _pathlist.addElement(fileList[i].getAbsolutePath()); 
        }
    }
    notifyDataSetChanged();
    return 0;
}

imFilter是一个filenamefilter,只接受jpg扩展名的文件。但是如果我在imFilter代码中设置断点,则断点不会发生事件。

Output of adb shell ls -l /data:
------------------------------------
drwxrwx--t system   misc              2010-08-05 15:32 misc
drwxrwx--x shell    shell             2010-08-05 15:32 local
drwxrwx--x system   system            2010-08-05 15:32 app-private
drwx------ system   system            2010-08-05 15:34 backup
drwx------ root     root              2010-08-05 15:34 property
drwxrwx--x system   system            2010-08-05 15:35 data
-rw-rw-rw- root     root        75752 2010-03-30 12:26 zona_ind_012.jpg
drwxrwx--x system   system            2010-08-05 16:16 app
drwxr-x--- root     log               2010-08-05 15:32 dontpanic
drwxrwx--x system   system            2010-08-05 16:25 dalvik-cache
drwxrwxr-x system   system            2010-08-05 17:16 system
drwxrwx--- root     root              2010-08-05 15:32 lost+found

1 个答案:

答案 0 :(得分:3)

我探索了那段代码,并且看到,麻烦是允许的。正如您在下面看到的,您无法读取该目录。找另一个目录来收集您的文件。

**Can read dir:** 
/dev =true
/root =false
/data =false
/default.prop =true
/init =false
/init.rc =false
/proc =true
/sbin =false
/sys =true
/system =true
/etc =true
/d =false
/mnt =true
/acct =true
/sdcard =true
/cache =false
/config =false

您可以从“ls -l”命令中看到。 explain what does mean