62,634
社区成员




// dir表示目录路径,name表示欲匹配的文件名的正则表达式
private File getFile(String dir, String name) {
File[] files = new File(dir).listFiles();
int len = files.length;
for (int i = len-1; i >= 0; i--) {
if (files[i].isDirectory()) {
// 当前访问文件为目录,则递归
return getFileStrByRegex(files[i].getAbsolutePath(), regName);
} else if (files[i].getName().matches(regName)) {
// 找到,返回
return files[i];
} else {
// 当前访问文件为真实文件,而非目录,但又不是符合条件的
// 这里要怎么写?当然可以什么都不写,那就请看最后一句return null;的注释
}
}
// 这句话一执行,无论当前递归到哪一层,整个函数都会结束并返回null,但是如果这句没有,则由于函数有返回值,会报语法错误
return null;
}
// dir表示目录路径,name表示欲匹配的文件名的正则表达式
private File getFile(String dir, String name) {
File[] files = new File(dir).listFiles();
File file= null;
int len = files.length;
for (int i = len-1; i >= 0; i--) {
if (files[i].isDirectory()) {
// 当前访问文件为目录,则递归
System.out.println("目录为 :" + files[i].getAbsolutePath());
getFile(files[i].getAbsolutePath(),name);
} else if (files[i].getName().matches(name)) {
// 找到,返回
file = files[i];
break;
} else {
System.out.println("不符合文件 :" + files[i].getName());
// 当前访问文件为真实文件,而非目录,但又不是符合条件的
// 这里要怎么写?当然可以什么都不写,那就请看最后一句return null;的注释
}
}
// 这句话一执行,无论当前递归到哪一层,整个函数都会结束并返回null,但是如果这句没有,则由于函数有返回值,会报语法错误
return file;
}
public ArrayList al=new ArrayList();
//我把ArrayList当成动态数组用,非常好用
public void GetAllDirList(string strBaseDir)
{
DirectoryInfo di=new DirectoryInfo(strBaseDir);
DirectoryInfo[] diA=di.GetDirectories();
for(int i=0;i<diA.Length;i++)
{
al.Add(diA[i].FullName);
//diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
GetAllDirList(diA[i].FullName);
//注意:递归了。逻辑思维正常的人应该能反应过来
}
}