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

文件的输入/输出问题
我在D:\dong1下有三个文件a.htm   b.htm   c.htm,现在执行下列程序
import   java.io.*;
public   class   FileFilterTest{
public   static   void   main(String   args[]){
File   dir=new   File( "\\dong1 ");
Filter   filter=new   Filter( "htm ");
System.out.println( "list   html   files   in   directory   "+dir);
String[]   files=dir.list(filter);
for(int   i=0;i <files.length;i++){
File   f=new   File(files[i]);
if(f.isFile())
System.out.println( "file   "+f);
else
System.out.println( "sub   directory   "+f);
}
}
}
class   Filter   implements   FilenameFilter{
String   extent;
Filter(String   extent){
this.extent=extent;
}
public   boolean   accept(File   dir,String   name){
return   name.endsWith( ". "+extent);
}
}
为什么得到的结果是
list   html   files   in   directory   \dong1
sub   directory   a.htm
sub   directory   b.htm
sub   directory   c.htm
而不是
list   html   files   in   directory   \dong1
file   a.htm
file   b.htm
file   c.ht

------解决方案--------------------
估计问题出在 File f=new File(files[i]); 这一句上

用listFiles(FilenameFilter filter)方法返回一个File数组就不会有这样的问题了
------解决方案--------------------
这样就可以了
list方法是列出指定目录下的所有文件的文件名! 而不是完整的路径
File f=new File(files[i]);
所以这句声明File类实例的句子就出错了 它会在当前工程的目录下来找files[i]指定的文件!
因为文件不存在!所以isFile() 返回的是false
所以就出现了你上面的结果
不知道我这样说对不对哈。。 说错了莫怪。。。

import java.io.*;
public class FileFilterTest{
public static void main(String args[]){
File dir=new File( "d:\\dong1 ");
Filter filter=new Filter( "htm ");
System.out.println( "list html files in directory "+dir);

File[] files=dir.listFiles(filter);

for(int i=0;i <files.length;i++){
File f=files[i];
if(f.isFile())
System.out.println( "file "+f.getName());
else
System.out.println( "sub directory "+f);
}
}
}
class Filter implements FilenameFilter{
String extent;
Filter(String extent){
this.extent=extent;
}
public boolean accept(File dir,String name){
return name.endsWith( ". "+extent);
}
}

------解决方案--------------------
File f = new File( "d:\\dong1\\ "+files[i]);
------解决方案--------------------
import java.io.*;
public class FileFilterTest{
public static void main(String args[]){
File dir=new File( "D:/dong1 ");
Filter filter=new Filter( "htm ");
System.out.println( "list html files in directory "+dir);
String[] files=dir.list(filter);
for(int i=0;i <files.length;i++){
File f=new File( "D:/dong1/ " + files[i]);
if(f.isFile())
System.out.println( "file "+f);