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

为什么.isFile()返回的是FALSE 呢,明明是TXT文件啊?
import   java.io.*;
public   class   mystring   {
public   static   void   main(String[]   args){
filter1   obj1=new   filter1( "txt ");
boolean   file_status;
File   f1=new   File( "C:\\WINDOWS ");
System.out.println( "****************************** ");
String[]   filelist=f1.list(obj1);
for(int   i=0;i <filelist.length;i++){
File   newfile=new   File(filelist[i]);
file_status=newfile.isFile();                   //此处
if   (file_status)
System.out.println( "file: "+newfile);
else
System.out.println( "directory: "+newfile);
}
System.out.println( "********************************** ");
}
}

class   filter1   implements   FilenameFilter{
String   fileexent;
filter1(String   extentobj){
fileexent=extentobj;
}
public   boolean   accept(File   dir,String   name){
return   name.endsWith( ". "+fileexent);
}

}

------解决方案--------------------
文件构造方法使用错误
在list了目录下的文件列表之后
应该用 File(path,fileName)来构造文件,不该用File(fileName)
修正为

String[] filelist=f1.list(obj1);
for(int i=0;i <filelist.length;i++)
{
File newfile=new File(f1.getPath(),filelist[i]);//此处
file_status=newfile.isFile();
if (file_status)
System.out.println( "file: "+newfile);
else
System.out.println( "directory: "+newfile);
}
System.out.println( "********************************** ");
}