求救递归调用方法有误!!!!!!!!!! 求解 递归方法的问题!!!!!!!!!!!!急 我写一个搜索文件路径的方法根目录不变
但递归时返回值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
但递归时返回值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
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();
}
{
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));
}
}