当前位置: 代码迷 >> Java相关 >> 返回文件夹问题
  详细解决方案

返回文件夹问题

热度:365   发布时间:2007-11-05 11:23:14.0
返回文件夹问题

/**
* 检查发布目录下是否存在文件夹
* @param folder 需要检查的文件
* @param name 需要检查的文件夹名称
* @Return 返回检查的文件夹
*/
private File A4IsExiste(File folder , String name) {
if (folder.isDirectory()) {
if ((name.equals(folder.getName()))) {
return folder;
} else {
File[] folderList = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
for (File folderItem : folderList) {
return A4IsExiste(folderItem, name);
}
}
}
return null;
}

如果我直接选择需要的文件夹,就没问题,但是如果选择需要文件夹的父目录或父目录的父目录……就找不到。请大家帮忙看看。谢谢

搜索更多相关的解决方案: folder  文件  name  File  param  

----------------解决方案--------------------------------------------------------
朋友们,帮个忙,急。。
----------------解决方案--------------------------------------------------------

我改了一下,现在可以了,就是可以查找到比如 D:/ 下任何你想要的文件名。

import java.io.*;

public class FileSelect {

File temp;
boolean isFinish =false;
public void A4IsExiste(File folder , String name) {

//System.out.println("folder path is " + folder.getAbsolutePath());
if (folder.isDirectory()) {
// System.out.println("the folder "+name+" name is "+folder.getName());

if (name.equals(folder.getName()))
{
//System.out.println("return");

this.temp = folder;
}
else
{
File[] folderList = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});

for(File folderItem : folderList) {
//System.out.println(folderList.length);
A4IsExiste(folderItem, name);
}
}
}
}
public static void main(String args[])
{
//new FileSelect().A4IsExiste("D:\\", null);
FileSelect tempFile =new FileSelect();
tempFile.A4IsExiste(new File("E:\\Eclipse project"),"Test2"); //《--这里可以写上查找文件的名字
System.out.println(tempFile.temp.getName() + " At " +tempFile.temp.getAbsolutePath());
}


----------------解决方案--------------------------------------------------------
  或者再有其他问题既话可以再发帖来讨论。嘻嘻
----------------解决方案--------------------------------------------------------
谢谢netstriker
但是你这种写法和我的写法有什么不一样呢?
我这里还是不可以的。

----------------解决方案--------------------------------------------------------
程序代码:

private File A4IsExiste(File root,String name){
if(!root.isDirectory()) throw new IllegalArgumentException(\"root must be a directory!\");
if(root.getName().equals(name)) return root;
File[] dirs =root.listFiles(new FileFilter(){
public boolean accept(File file){
return file.isDirectory();
}
});
File result =null;
for(File dir: dirs){
result =A4IsExiste(dir,name);
if(result !=null) break;
}
return result;
}

注意红色的那一句代码.
另外方法名A4IsExiste取的太莫名其妙了.
----------------解决方案--------------------------------------------------------
加上那句还是这样的
这个和名字没什么关系吧?
----------------解决方案--------------------------------------------------------
以下是引用bygg在2007-11-5 11:23:14的发言:

/**
* 检查发布目录下是否存在文件夹
* @param folder 需要检查的文件
* @param name 需要检查的文件夹名称
* @Return 返回检查的文件夹
*/
private File A4IsExiste(File folder , String name) {
if (folder.isDirectory()) {
if ((name.equals(folder.getName()))) {
return folder;
} else {
File[] folderList = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
for (File folderItem : folderList) {
return A4IsExiste(folderItem, name);

}
}
}
return null;
}

如果我直接选择需要的文件夹,就没问题,但是如果选择需要文件夹的父目录或父目录的父目录……就找不到。请大家帮忙看看。谢谢

你自己想想,你那个for循环有作用吗?
不理解偶也没办法.


----------------解决方案--------------------------------------------------------
那个for 语句的意思是枚举出来那个文件夹下的所以所以子文件夹.我觉得只可以列出这一个文件夹的子文件夹,
就像Eastsun那样说,在 for 语句里return 好像有点问题啊.
----------------解决方案--------------------------------------------------------
我知道怎么回事了,谢谢大家。呵
----------------解决方案--------------------------------------------------------
  相关解决方案