求救递归调用方法有误!!!!!!!!!! 求解 递归方法的问题!!!!!!!!!!!!急 我写一个搜索文件路径的方法根目录不变 
但递归时返回值a又被初始化为空 
希望高手解决 谢谢 
import java.io.*; public class Bad 

public String path(File[] list) 

System.out.println(list.length); 
String path2 = ""; 
String a =""; for(int i=0;i<list.length;i++) 

if(list[i].isFile()) 

path2 = list[i].getAbsolutePath(); 
int s1 = path2.lastIndexOf("\\"); 
int s2 = path2.lastIndexOf("."); 
String type = path2.substring(s1+1,s2); 
if( s1!=-1 && type.equals("qwe")) 
{ //加上判断防止下面substring(s)越界 
a = path2.substring(0,s1+1); } 
} if(list[i].isDirectory()) 

path2 = list[i].getAbsolutePath(); 
File[] temps = list[i].listFiles(); 
path(temps); 


return a; 
} public static void main(String[] args) 

File d=new File("D:\\123/"); 
File list[]=d.listFiles(); 
Bad bad = new Bad(); 
System.out.println(bad.path(list)); 

} 快阿 老板要骂拉 小弟 msn:wjncet@hotmial 

解决方案 »

  1.   

    public static List getChildDirs(String path) throws Exception {
            List dirs=new ArrayList();
            File [] filelist=new File(path).listFiles();
            if(filelist==null) return dirs;
            for(int i=0; i<filelist.length; i++) {
                if(filelist[i].isDirectory()) {
                    String childPath=filelist[i].getPath();
                    dirs.add(childPath);
                }
            }
            return dirs;
        }
        
        public static List getChildFiles(String path) throws Exception {
            List files=new ArrayList();
            File [] filelist=new File(path).listFiles();
            if(filelist==null) return files;
            for(int i=0; i<filelist.length; i++) {
                if(filelist[i].isFile()) {
                    String childPath=filelist[i].getPath();
                    files.add(childPath);
                }
            }
            return files;
        }然后用下面的方法调用上面的两个函数,OK了吧,呵呵,path就是根路径
            List childFiles=getChildFiles(path);
            
            for(Iterator iter=childFiles.iterator(); iter.hasNext(); ) {
                String childFile=(String) iter.next();
            }
            
            List childDirs=getChildDirs(path);
            for(Iterator iter=childDirs.iterator(); iter.hasNext(); ) {
                String childDir=(String) iter.next();
            }
      

  2.   

    import java.io.*; public class Bad 

    String a ; 
    public String path(File[] list) 

    System.out.println(list.length); 
    String path2 = ""; for(int i=0;i<list.length;i++) 

    if(list[i].isFile()) 

    path2 = list[i].getAbsolutePath(); 
    int s1 = path2.lastIndexOf("\\"); 
    int s2 = path2.lastIndexOf("."); 
    String type = path2.substring(s1+1,s2); 
    if( s1!=-1 && type.equals("qwe")) 
    { //加上判断防止下面substring(s)越界 
    a = path2.substring(0,s1+1); } 
    } if(list[i].isDirectory()) 

    path2 = list[i].getAbsolutePath(); 
    File[] temps = list[i].listFiles(); 
    path(temps); 


    return a; 
    } public static void main(String[] args) 

    File d=new File("D:\\123"); 
    File list[]=d.listFiles(); 
    Bad bad = new Bad(); 
    System.out.println(bad.path(list));