import java.io.*;
class FileDemo2
{
public static void main(String[] args)
{
//File dir = new File("c:\\");
//File[] files = dir.listFiles();
//for(File f:files)
//{
// System.out.println(f.getName()+"---"+f.length());
//}
//System.out.println(files);
//listRootsDemo();
listDemo_2();
}
public static void listDemo_2()
{
File dir = new File("C:\\Documents and Settings\\Administrator\\桌面\\day20");
//FilenameFilter fnf=new Test();
String[] arr = dir.list(new Test());
//System.out.println(arr);
for(String name : arr)
{
System.out.println(name);
}
}
public static void listDemo()
{
File f = new File("c:\\abc.txt");
String[] names = f.list();//调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
for(String name : names)
{
System.out.println(name);
}
}
public static void listRootsDemo()
{
File[] files = File.listRoots();
for(File f : files)
{
System.out.println(f);
}
}
}
class Test implements FilenameFilter
{
public boolean accept(File file,String name)
{
System.out.println(file+"..."+name);
return(name.endsWith(".bmp"));
}
}
毕老师的视频上用的是匿名对象,我看的有点不爽,于是自己又实现了FilenameFilter接口的accept方法,不解的地方在 dir.list(new Test())这,我new了一个Test()对象,但是我并没有调用accept方法,更没有给它传递任何参数,那么file 和 name局部变量接收的是谁传递来的参数呢?实验演示虽然能打印出正确结果,貌似
file接收的是dir变量指向的对象,而name却有点像File f.getName()...跪请高人指导下,非常想知道accept是怎么实现的!:L |