public void ToSearchFiles(File file) {
        //定义一个File文件数组,用来存放 /sdcard 目录下的文件或文件夹
        File[] the_Files = file.listFiles() ;
        //通过遍历所有文件和文件夹
        for (File tempF : the_Files) {
        
         if (tempF.isDirectory()) 
             ToSearchFiles(tempF);
         else
            
           {
            try {
                //是文件,进行比较,如果文件名称中包含输入搜索Key,则返回大于-1的值
                if (tempF.getName().indexOf(theKey_formInput) > -1) {
                    //获取符合条件文件的路径,进行累加
                    path +="\n"+ tempF.getPath();
                    //显示结果的TextView显示信息和搜索到的路径
                    show_Result.setText(info + path);
                }
            } catch (Exception e) {
                // TODO: handle exception
                //如果路径找不到,提示出错
                Toast.makeText(this, getString(R.string.pathError),Toast.LENGTH_SHORT).show();
            }
            }
        }if (tempF.isDirectory()) 
             ToSearchFiles(tempF);
这个有问题,一加上去程序就出错

解决方案 »

  1.   

    在这个后面File[] the_Files = file.listFiles() ;
    加一个
    if(the_Files != null)
    {
        然后把你那段for循环放在这里
    }搜索文件最好要用Thread来实现,否则可能会程序直接卡到崩溃
      

  2.   

    show_Result.setText(info + path);
    这个还是不要放for循环里的好。 
      

  3.   

    好吧,其实这样的:
    查找sd卡里是否有需要的文件,如果找到就显示出路径,但这段程序有问题,只能找到sd卡主目录下的文件,却不能找到文件夹里面的