文件的输入/输出问题
我在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);