我想写个文件夹名匹配的程序,但是查了资料,不知道如何下手。求指导!
下面是读取某某文件夹下的第一层文件夹名import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;public class ReadFileName {
private File f;
private String  path;
private File[] list;
public ReadFileName(){
f=null;
path="H:\\CDMS\\Docs";
f=new File(path);                 //新建文件读取文件夹下面的文件名
    list=f.listFiles();
}
public  ReadFileName(String url){
f=null;
path="H:\\CDMS\\"+url;
f=new File(path);                 //新建文件读取文件夹下面的文件名
    list=f.listFiles();

}
public void printFileName()
{
int i;
for(i=0;i<list.length;i++)
{
System.out.println(list[i].getAbsolutePath());
}
}
public File[] GetFileListName()
{
return list;//返回文件名列表
}
static public void main(String[] str)throws Exception{
ReadFileName rN=new ReadFileName("Docs");
rN.printFileName();
}}但是匹配我就不知道如何匹配,比如,H:\\CDMS\\Docs 下,有个文件夹A,如何匹配成功?。下面是我的想法
import java.io.File;import ReadFileName.ReadFileName;public class MatchFileName {
private ReadFileName RFN;
private String InputFileName;
private File[] list;
public MatchFileName()
{
RFN=new ReadFileName();
list=null;
}

/**
 * @author Administrator
 * @param  匹配输入的文件名
 */
public boolean MatchFilename(String name)
{
boolean bool=false;
String s="H:\\CDMS\\Docs\\"+name;
list=RFN.GetFileListName();
int i;
for(i=0;i<list.length;i++)
{
if(list[i].getAbsoluteFile().equals(s))
{
System.out.println(list[i].getAbsolutePath());
bool=true;
}
System.out.println(s);
}
return bool;

}
public static void main(String args[])
{
MatchFileName MFN=new MatchFileName();
System.out.println(MFN.MatchFilename("A"));
}}希望可以说仔细一下,我查了一下资料,说要正则表达式....

解决方案 »

  1.   


    public boolean MatchFilename(String name)
        {
            boolean bool=false;
            String s="H:\\CDMS\\Docs\\"+name;
            list=RFN.GetFileListName();
            int i;
            for(i=0;i<list.length;i++)
            {
                if(list[i].getAbsoluteFile().equals(s))//这里为什么要用getAbsoluteFile 换成getAbsolutePath试试
                {
                    System.out.println(list[i].getAbsolutePath());
                    bool=true;
                }
                System.out.println(s);
            }
            return bool;
            
        }
      

  2.   

    好长,没看完,是遍历文件夹么?为什么不用isDirectory()方法呢?再结合if,不就可以了
      

  3.   

    if(list[i].getAbsolutePath().equals(new File(s).getAbsolutePath()))
    { //or if (list[i].getName().equals(new File(s).getName()))
        System.out.println(list[i].getAbsolutePath());
        bool=true;
    }
    //getAbsoluteFile是获得该文件的绝对路径下的文件对象,如
    File f1 = new File("xxx");
    File f2 = f1.getAbsoluteFile(); //这里相当于File f2 = new File(f1.getAbsolutePath());//getAbsolutePath是获得该文件的绝对路径的文字字符串,如当前文件 H:\test
    File f1 = new File("test");
    String path = f1.getPath(); //这里获得的是 test 路径,是相对路径,相对于当前路径的路径
    String abpath = f1.getAbsolutePath(); //这里获得的是 H:\test 路径,是绝对路径//getName是获得文件名
    File f1 = new File("H:\\test");
    String name = f1.getName(); //这里获得的是文件的名字 test
     
      

  4.   

    匹配文件夹???
    这个可以用isDir~判断的,如果不使用的话,一个不怎么样的办法就是看文件的后缀名了,但文件夹也可以有点的,文件名也可以没点的,所以很不好的想法。
    至于说是正则表达式来匹配文件夹,那也太玄了吧,这个不是说要匹配就可以匹配的,正则匹配的是字符,不是文件类型的