您的位置:首页 > 编程语言 > Java开发

java之io之File类的list()方法过滤目录的使用

2016-05-30 23:31 501 查看
java的io的知识中,File类必须掌握。File类是对文件或者文件夹的封装。它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等。

如果File封装的文件夹,File类的list()方法可以将此文件夹下的所有文件夹和文件已字符串数组的形式返回。

list(FilenameFilter)可以对返回的字符串数组进行过滤,取自己想要的字符串。

?打印文件夹下的.java文件

实现1

package com.westward.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

public class ListFileDemo {
public static void main(String[] args) {
File file= new File("..");
listFileJava(file);
}

public static void listFileJava(File file){
for (String string : file.list(new DirFilter(".*\\.java"))) {
System.out.println(string);
}

}
}

class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex) {
// TODO Auto-generated constructor stub
pattern= Pattern.compile(regex);
}
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return pattern.matcher(name).matches();
}

}


实现2 匿名内部类的形式

package com.westward.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

public class ListFileDemo2 {
public static void main(String[] args) {
File file= new File("..");
final String regex= ".*\\.java";
String[] files= file.list(new FilenameFilter() {
private Pattern pattern= Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
});
for (String string : files) {
System.out.println(string);
}
}
}


output:
Demo.java
hha.java
ln.java

注意:

匿名内部类若 需要访问外部方法的局部变量,那么局部变量必须被 final 所修饰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: