在java.io中类File有两个方法list和listFiles
list()方法:
1 public void test() { 2 File file = new File("E:/syl"); 3 // String[] list() 4 // 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 5 String[] list = file.list(); 6 for (String f : list) { 7 System.out.println(f); 8 } 9 }
运行结果:
listFiles()方法:
1 public void test() { 2 File file = new File("E:/syl"); 3 // File[] listFiles() 4 // 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 5 File[] list = file.listFiles(); 6 for (File f : list) { 7 System.out.println(f); 8 System.out.println("文件名:" + f.getName()); 9 System.out.println("是否是一个目录:" + f.isDirectory()); 10 // long length() 11 // 返回由此抽象路径名表示的文件的长度。 12 System.out.println("文件的长度" + f.length() + "字节"); 13 System.out.println("-----------------"); 14 } 15 }
运行结果(部分):
想要在目录中“返回满足指定过滤器的文件和目录”会用到list(FilenameFilter filter)和
listFiles(FilenameFilter filter)方法。
首先得实现java.io 中的FilenameFilter接口,可以创建一个外部类或内部类来实现此接口。
1 class HtmlFileFilter implements FilenameFilter {// 创建外部类或内部类实现此接口 2 @Override 3 // boolean accept测试指定文件是否应该包含在某一文件列表中。 4 public boolean accept(File dir, String name) { 5 // TODO Auto-generated method stub 6 if (name.endsWith(".html")) 7 return true; 8 return false; 9 } 10 }
实现FilenameFilter接口的HtmlFileFilter类实例可用于过滤器文件名(.html)。
1 public void test() { 2 File file = new File("E:/syl"); 3 String[] list = file.list(new HtmlFileFilter()); 4 System.out.println("路径E:/syl中是HTML类型的有:"); 5 for (String f : list) { 6 System.out.println(f); 7 } 8 }
运行结果:
其中在实现FilenameFilter接口时,也可以使用匿名内部类的方式实现:
首先传送大神的博客:java中的匿名内部类总结
1 import java.io.File; 2 import java.io.FilenameFilter; 3 4 public class TestFile { 5 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 File file = new File("E:/syl"); 9 // String[] list() 10 // 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 11 String[] list = file.list(new FilenameFilter() { 12 // 匿名内部类 13 @Override 14 public boolean accept(File dir, String name) { 15 // TODO Auto-generated method stub 16 if (name.endsWith(".html")) 17 return true; 18 return false; 19 } 20 21 }); 22 System.out.println("路径E:/syl中是HTML类型的有:"); 23 for (String f : list) { 24 System.out.println(f); 25 } 26 } 27 28 }
运行结果同上,这样代码的编写会简化许多。