java输出指定的格式_使用FilenameFilter输出指定格式的文件

要得到特定目录下特定格式的文件,我们可以通过实现java.io包中的FilenameFilter接口 来

完成,API文档中对其介绍如下:

public interface FilenameFilter

Instances of classes that implement this interface are used to filter filenames. These

instances are used to filter directory listings in the list method of class File, and by the

Abstract Window Toolkit's file dialog component.实现此接口的类的实例用来过滤文件名。这些

实例用来过滤File类中list方法的目录列表,AWT中的文件对话框组件也能用到它。

该接口中只有一个方法:

public boolean accept(File dir,String name)

该方法用来检查特定文件是否应该包含在文件列表中,dir表示调用list方法的File实例所表示的

目录。name是该目录下文件的名称。

我们在实现这个接口时,dir参数通常是用不到的;我在网上也搜了一下,没有一个人对该接口实现时

用到了dir参数,所以我在下面的实现类中也没有用到它,但足以满足过滤特定文件的要求了。

下面是实现类,该类中的main方法用于测试。

/** 创建日期 2011-11-24

* 演示如何使用Java来输出指定文件夹下指定格式的文件*/

package arron.util;

import java.io.File;

import java.io.FilenameFilter;

import java.util.Arrays;

/**

* @author Arron

**/

public class MyFileFilterDemo implements FilenameFilter{

private String format;//要过滤的文件格式

public MyFileFilterDemo(String format){

this.format=format;

}

//测试该实现是否完成要求    public static void main(String[] args) {

File file=new File("d:/我的文档/桌面/c++和java学习记录/JAVA/Swing");

if(file.isDirectory()){

String[] filenameList=file.list(new MyFileFilterDemo(".java"));//只保留java格式文件

for(String name:filenameList)

System.out.println(name);

}

}

/** @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)*/

public boolean accept(File dir, String name) {

//dir参数可以忽视        if(name.endsWith(format))

return true;

return false;

}

}

在java.io包中还有一个FileFilter接口,该接口与FilenameFilter的作用和实现方式几乎一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的文件过滤器接口主要有两种:`FileFilter`和`FilenameFilter`。它们都可以用于过滤文件,让我们只获取需要的文件。 `FileFilter`过滤器接口定义了一个用于判断文件是否符合要求的方法`accept(File pathname)`,该方法返回一个布尔值,符合要求的文件返回`true`,否则返回`false`。下面是一个简单的实现示例: ```java import java.io.File; import java.io.FileFilter; public class MyFileFilter implements FileFilter { private String ext; public MyFileFilter(String ext) { this.ext = ext; } @Override public boolean accept(File file) { if (file.isFile() && file.getName().endsWith(ext)) { return true; } return false; } } ``` 上面的代码实现了一个过滤器,只保留指定扩展名的文件使用方法如下: ```java public static void main(String[] args) { File dir = new File("C:/mydir"); FileFilter filter = new MyFileFilter(".txt"); File[] files = dir.listFiles(filter); for (File f : files) { System.out.println(f.getName()); } } ``` 上面的代码将输出`C:/mydir`目录下所有扩展名为`.txt`的文件名。 `FilenameFilter`过滤器接口也定义了一个用于判断文件是否符合要求的方法`accept(File dir, String name)`,该方法返回一个布尔值,符合要求的文件返回`true`,否则返回`false`。下面是一个简单的实现示例: ```java import java.io.File; import java.io.FilenameFilter; public class MyFilenameFilter implements FilenameFilter { private String ext; public MyFilenameFilter(String ext) { this.ext = ext; } @Override public boolean accept(File dir, String name) { if (name.endsWith(ext)) { return true; } return false; } } ``` 使用方法与`FileFilter`类似,只是需要把过滤器传递给`File`类的`list()`或`listFiles()`方法,如下所示: ```java public static void main(String[] args) { File dir = new File("C:/mydir"); FilenameFilter filter = new MyFilenameFilter(".txt"); String[] files = dir.list(filter); for (String name : files) { System.out.println(name); } } ``` 上面的代码将输出`C:/mydir`目录下所有扩展名为`.txt`的文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值