Filter是Dir1的内部类只能在Dir1类内部使用不能在静态方法里构造import java.io.*;public class Dir1
{
//主函数
public static void main(String[] args)
{
new Dir1().list();
}
public void list()
{
File flDir = new File(".");
System.out.println("Files in "+ flDir.getAbsolutePath());
String strFiles[] = flDir.list(new Filter("java"));
//分别用来记录子目录的个数和文件的个数
int intDirCount = 0,intFileCount = 0;
//用来记录所有文件的总长度
long lngSize = 0;
for(int i=0;i<strFiles.length;i++)
{
File flTemp = new File(strFiles[i]);
if(flTemp.exists())
{
//判断是否是普通文件
if(flTemp.isFile())
{
System.out.println(strFiles[i]+"\t"+flTemp.length());
intFileCount++;
lngSize = lngSize + flTemp.length();
}
//判断是否是目录
if(flTemp.isDirectory())
{
System.out.println(strFiles[i]+"\t<DIR>");
intDirCount++;
}
}
}
System.out.println(intFileCount + "file(s)\t" + lngSize + "bytes");
System.out.println(intDirCount + "dir(s)");
}
//文件名过滤器,用于过滤已指定字符串结尾的文件名
class Filter implements FilenameFilter
{
String extent;
Filter(String extent)
{
this.extent = extent;
}
public boolean accept(File dir,String name)
{
return name.endsWith("." + extent);
}
}
}
{
//主函数
public static void main(String[] args)
{
new Dir1().list();
}
public void list()
{
File flDir = new File(".");
System.out.println("Files in "+ flDir.getAbsolutePath());
String strFiles[] = flDir.list(new Filter("java"));
//分别用来记录子目录的个数和文件的个数
int intDirCount = 0,intFileCount = 0;
//用来记录所有文件的总长度
long lngSize = 0;
for(int i=0;i<strFiles.length;i++)
{
File flTemp = new File(strFiles[i]);
if(flTemp.exists())
{
//判断是否是普通文件
if(flTemp.isFile())
{
System.out.println(strFiles[i]+"\t"+flTemp.length());
intFileCount++;
lngSize = lngSize + flTemp.length();
}
//判断是否是目录
if(flTemp.isDirectory())
{
System.out.println(strFiles[i]+"\t<DIR>");
intDirCount++;
}
}
}
System.out.println(intFileCount + "file(s)\t" + lngSize + "bytes");
System.out.println(intDirCount + "dir(s)");
}
//文件名过滤器,用于过滤已指定字符串结尾的文件名
class Filter implements FilenameFilter
{
String extent;
Filter(String extent)
{
this.extent = extent;
}
public boolean accept(File dir,String name)
{
return name.endsWith("." + extent);
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货