我想写个文件夹名匹配的程序,但是查了资料,不知道如何下手。求指导!
下面是读取某某文件夹下的第一层文件夹名
- 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:\testFile 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