package namespace;
import java.io.*;
public class IOTest {
public static void main(String args[]) throws IOException
{
File file = new File("F:\\soft");
list(file,0);
}
public static String getSpace(int level)
{
StringBuffer sb = new StringBuffer();
for(int i=0;i<level;i++)
sb.append(" ");
return sb.toString();
}
public static void list(File dir,int level)
{
File [] list = dir.listFiles();
System.out.println(getSpace(level)+dir);
level++;
if(list!=null)
{
for(File f : list)
{
if(f.isDirectory())
list(f,level);
else
System.out.println(getSpace(level)+f);
}
}
}
public static void list(File file)
{
File files[] = file.listFiles(new FilenameFilter() {//定义一个内部类实现接口FilenameFilter,而不用再实现一个新的类去实现接口
public boolean accept(File f,String name)
{
File tempfile = new File (f,name);
if(tempfile.isDirectory())
return true;
return name.endsWith(".txt");
}
});
if(files != null)
{
for(File f : files)
{
if(f.isDirectory())
list(f);
else
System.out.println(f.getAbsolutePath());
}
}
}
}
/*
*
* 带有层级的文级文件
*
* 在访问时带一个表示层级的变量,该变量也是表示要在显示的文件名字的前面加几个空格的一个参考,所以每次循环一
* 次子目录时,就把这个变量加1,这样就可以表示有一定层级的显示出来
* 2011/10/31 20:0:20
*
*
*
* */