使用FilenameFilter实现图片过滤,只要.gif,.jpg,.png文件。
java 代码
- public class ImageFilter implements FilenameFilter{
-
-
public boolean isGif(String file) {
-
if (file.toLowerCase().endsWith(".gif")){
-
return true;
-
}else{
-
return false;
- }
- }
-
public boolean isJpg(String file){
-
if (file.toLowerCase().endsWith(".jpg")){
-
return true;
-
}else{
-
return false;
- }
- }
-
-
public boolean isPng(String file){
-
if (file.toLowerCase().endsWith(".png")){
-
return true;
-
}else{
-
return false;
- }
- }
-
public boolean accept(File dir,String fname){
-
return (isGif(fname) || isJpg(fname) || isPng(fname));
-
- }
-
- }
-
程序测试类:
java 代码
- public class ImageFilterTest{
-
public static void main(String[] args){
-
File directory=new File("E:\\program\\FilenameFilter\\images");
-
String[] images = directory.list(new ImageFilter());
-
System.out.println("size="+images.length);
-
for (int i = 0; i < images.length; i++){
- String imgfile=images[i];
-
System.out.println("imgfile="+imgfile);
- }
- }
- }
ImageFilter 类对象的任务就是提供一个accept( )的方法。之所以要创建这个类,就是要给list( )提供一个accept( )方法,这样当list( )判断该返回哪些文件名的时候,能够"回过头来调用"accept( )方法。因此,这种结构通常被称为回调(callback)。更准确地说,由于list( )实现了基本功能,而FilenameFilter提供了"对外服务所需的算法",因此这是一种"策略模式(Strategy Pattern)"。由于list( )拿FilenameFilter对象当参数,因此你可以将任何实现FilenameFilter接口的对象传给它,并以此(甚至是在运行时)控制list( )的工作方式。回调能提高程序的灵活性。
分享到:
相关推荐
该接口通常与`java.io.File`类中的`list(FilenameFilter filter)`和`listFiles(FilenameFilter filter)`方法结合使用,帮助开发者根据特定条件筛选出文件列表。 #### 二、FilenameFilter接口定义 FilenameFilter...
例如,我们可以使用 FileFilter 来过滤某个目录下的所有文件,然后使用 FilenameFilter 来过滤文件名,找到符合条件的文件。 优点 使用 FileFilter 和 FilenameFilter 有很多优点,例如: * 可以实现文件的过滤、...
下面我们将详细讨论`FilenameFilter`接口的工作原理、如何使用以及它的实际应用。 `FilenameFilter`接口定义了一个单一的方法: ```java boolean accept(File dir, String name); ``` - `dir`: 代表当前正在检查...
"Java使用FilenameFilter查找出目录下指定后缀的文件示例" Java语言中,FilenameFilter是一个非常有用的类,主要用于文件遍历和查找操作。今天,我们将通过一个实例,介绍如何使用FilenameFilter查找出目录下指定...
在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 `.java` 文件的列表。`list()` 方法是这个过程的关键,它会返回指定目录下符合过滤条件的所有文件名。 首先,我们需要了解 `...
- `list(FilenameFilter)`:使用自定义的过滤器获取目录下符合条件的文件和目录。 - `lastModified()`:获取文件的最后修改时间。 - `length()`:获取文件的大小(字节)。 - `getName()`:获取文件的名称。 在实际...
然后,我们使用`listFiles`方法并传入我们的`TxtFileFilter`实例,这将返回一个`File`数组,其中包含满足过滤条件的所有文件。如果目录为空或不存在,`listFiles`会返回`null`,所以我们需要进行判断。最后,我们...
标题中的“通配符比较”指的是在编程中使用特定的字符模式(通配符)来匹配和查找符合特定规则的字符串。...在Java中,通过`File`类和`FilenameFilter`接口,或者使用正则表达式,我们可以方便地实现这一功能。
通过上述示例,我们可以看到如何利用Java的`FilenameFilter`接口来创建自定义的文件名过滤器,并使用这些过滤器来高效地筛选出符合特定条件的文件。这对于处理大量文件时尤其有用,可以帮助我们更快地找到需要处理的...
- **兼容性和性能考量**: 在选择使用旧版 I/O 类库还是新版 nio 时,开发者需要考虑兼容性和性能因素。通常情况下,nio 提供了更好的性能,但在某些场景下可能需要使用旧版 I/O 类库以确保向后兼容性。 通过上述...
总结以上,Java基础面试题主要涉及文件操作(获取路径、创建目录、读写文件)、过滤器的使用(如`FilenameFilter`)以及序列化和反序列化的概念。在实际开发中,这些基础知识是构建可靠和高效Java应用程序的基础。...
2. **listFiles(FilenameFilter)**:此方法允许我们传递一个`FilenameFilter`对象,它定义了文件名是否应包含在结果列表中的逻辑。通过自定义`FilenameFilter`,我们可以根据文件的后缀名筛选文件。 下面是一个简单...
在使用 File 类时,我们可以使用匿名内部类来创建一个 FilenameFilter,例如: ```java public class DirList2 { public static FilenameFilter filter(final String afn) { return new FilenameFilter() { ...
我们使用FilenameFilter接口来过滤文件,仅保留.java文件。然后,我们使用FileInputStream和FileOutputStream类来复制文件,并将文件扩展名从.java改为.jad。 在main函数中,我们使用File类来创建文件对象,并使用...
以下是一个简单的示例,展示了如何使用匿名内部类创建一个过滤`.java`文件的`FilenameFilter`: ```java import java.io.*; public class DirList2 { public static FilenameFilter filter(String extension) { ...
以下是一个简单的示例,展示了如何使用File类和FilenameFilter接口列出并过滤目录中的文件: ```java import java.io.File; import java.io.FilenameFilter; public class DirList { public static void main...
本教程将深入探讨如何使用Java实现这一功能。首先,我们需要了解Java中与文件操作相关的类,如`File`、`Files`和`DirectoryStream`。 1. **File类**:`java.io.File`是Java中的核心类,用于表示文件和目录路径名的...
#### 知识点一:使用AWT库中的`FileDialog`与`FilenameFilter`类实现文件打开功能 在Java早期版本中,可以通过使用AWT(Abstract Window Toolkit)库来创建文件打开对话框。具体而言,`FileDialog`类用于展示一个...