日期:2014-05-20  浏览次数:20704 次

如何匹配文件夹名字??求大神指点
我想写个文件夹名匹配的程序,但是查了资料,不知道如何下手。求指导!
下面是读取某某文件夹下的第一层文件夹名
Java code



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,如何匹配成功?。下面是我的想法
Java code


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"));
    }

}




希望可以说仔细一下,我查了一下资料,说要正则表达式....

------解决方案--------------------

Java code
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;
        
    }

------解决方案--------------------
好长,没看完,是遍历文件夹么?为什么不用isDirectory()方法呢?再结合if,不就可以了
------解决方案--------------------
Java code
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