您的位置:首页 > 其它

22-IO流-38-IO流(File对象-常见功能-过滤器)

2015-08-11 16:11 525 查看
package bean;

import java.io.File;
import javax.swing.filechooser.FileFilter;

public class FilterByHidden implements FileFilter {

public boolean accept(File pathname) {

return pathname.isHidden();
}
}

=========================分割线==================================

package bean;

import java.io.File;

import java.io.FilenameFilter;

public class FilterByTxt implements FilenameFilter{

@Override

public boolean accept(File dir, String name) {

return name.endsWith(".txt");//返回所有文件名称.txt结尾的文件

/**

* 查找API,发现String类有如下方法:

* boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束

*/

}

}

=========================分割线==================================

/*
* 【需求】
* 既然上一个视频中list是获取所有文件及文件夹名称,那么现在只需要获取所有扩展名为txt的文件,其余都不要。
*
* 【File中的方法】
* String[] list(FilenameFilter filter)
* 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
* 也就是说,通过传递一个过滤器给list,从而只获取满足该过滤器的文件。
*
* 其中FilenameFileter为接口,其内就一个方法:
* boolean accept(File dir,String name):测试指定文件是否应该包含在某一文件列表中。
* 返回:当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false。
*
*/

package demo;

import java.io.File;

import bean.FilterByHidden;
import bean.FilterByTxt;

public class Demo {

public static void main(String[] args) {

//		listDemo();
listDemo2();

}

public static void listDemo() {

File dir = new File("c:\\");

String[] names = dir.list(new FilterByTxt());//将过滤器传入,只保留符合条件的文件名称

for(String name:names){
System.out.println(name);
}
}

public static void listDemo2() {
/**
* 【最常用的方法】
* (1) File[] listFiles()
*         返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。(直接拿文件,比上面拿名称好)
* (2) File[] listFiles(FilenameFilter filter)
*         返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。(加上以文件名过滤的过滤器)
* (3) File[] listFiles(FileFilter filter)
*        返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。(加上以文件过滤的过滤器)
*/
File dir = new File("c:\\");
//		File[] files = dir.listFiles();
//		for(File file:files){
//			System.out.println(file);//输出的全是c盘下所有文件的路径名
//		}

File[] files = dir.listFiles(new FilterByHidden());
for(File file:files){
System.out.println(file);//输出的全是c盘下所有隐藏文件
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: