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
*
*
*
* */