`

找出指定目录.java结尾的文件

阅读更多

取出D盘下所有的以java为扩展名的文件。

 

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

/**
 * @author whp
 * @Email whp@ehoo.cn
 * @Jul 26, 2011
 * 
 */
public class DirList {
	public static void main(String[] args) {
		File path = new File("d:\\");
		String[] list;
		if (args.length == 0) {
			list = path.list();
		} else {
			list = path.list(new DirFilter(args[0]));
		}
		Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
		for (String dirItem : list) {
			System.out.println(dirItem);
		}
	}

}

class DirFilter implements FilenameFilter {
	private Pattern pattern;

	public DirFilter(String regex) {
		pattern = Pattern.compile(regex);
	}

	public boolean accept(File dir, String name) {
		return pattern.matcher(name).matches();
	}

}

 

 

如果在运行参数里输入 .{3,3}\.java  代表 找出文件名为3位,切只显示文件名为三位的,扩展名为.java的文件。

  . 的意思是任意字符。 {3,3}的意思是文件名是3位的。如果把{3,3}改成{3,N},其中N代表的是一个数字,可以是任意多个。如果改成{3,}代表,文件名最少为三位或多位的文件。\.的意思是对.进行转义,因为.默认的意思是表示任何一个字符。

 

 

上面的例子可以用一个内部类来完成:

 

 

package io;

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

/**
 * @author whp
 * @Email whp@ehoo.cn
 * @Jul 27, 2011
 * 
 */
public class DirList2 {

	private static FilenameFilter filter(final String regex) {
		return new FilenameFilter() {
			private Pattern pattern = Pattern.compile(regex);

			public boolean accept(File dir, String name) {
				return pattern.matcher(name).matches();
			}

		};

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		File path = new File("d:\\");
		String[] list;
		list = path.list(filter(".*\\.java"));// list方法会为目录下面的每一个文件名调用accept(),判断该文件是否包含在内,判断结果由accept返回的boolean值来表示。
		Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
		for (String dirItem : list) {
			System.out.println(dirItem);
		}
	}

}

 

 

 

 

 上面的程序,可以进一步改进。如下

 

 

 

 

package io;

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

/**
 * @author whp
 * @Email whp@ehoo.cn
 * @Jul 27, 2011
 * 
 */
public class DirList3 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		File path = new File("d:\\");
		String[] list;
		list = path.list(new FilenameFilter() {
			private Pattern pattern = Pattern.compile(".*\\.java");

			public boolean accept(File dir, String name) {
				return pattern.matcher(name).matches();
			}

		});// list方法会为目录下面的每一个文件名调用accept(),判断该文件是否包含在内,判断结果由accept返回的boolean值来表示。
		Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
		for (String dirItem : list) {
			System.out.println(dirItem);
		}
	}

}

 

分享到:
评论
1 楼 wf_fred 2013-04-04  
请问你所谓的运行参数在哪里输入的???

相关推荐

    用java写的文件搜索工具V1.1

    例如,你可以找到过去24小时内被修改的所有文档,或者找出一个项目启动时创建的文件。 3. **文件类型过滤**:该工具允许用户指定要查找的文件类型,如`.txt`、`.docx`、`.jpg`等,帮助快速定位特定格式的文件,尤其...

    根据后缀名获取文件列表

    例如,我们可能需要找出所有图片文件(如.jpg、.png)或文档文件(如.docx、.pdf)。这个过程可以通过编程实现,下面将详细讲解如何根据后缀名获取文件列表。 首先,我们需要了解什么是文件后缀名。文件后缀名是...

    JAVA常见异常解析,面试用

    当Java虚拟机试图加载某个类,但在类路径中找不到对应的类文件时,将抛出此异常。确保类名、包名以及类路径设置正确,特别是从JAR文件或网络加载类时。 3. **java.lang.ArithmeticException**: 表示执行了非法的...

    找出哪几个数值的和接近目标值

    标题 "找出哪几个数值的和接近目标值" 描述了一个常见的算法问题,它涉及到寻找一组数值中的若干项,使得它们的和最接近于一个给定的目标值。在计算机科学和编程领域,这样的问题通常用于数据处理、数据分析或者优化...

    java 面试题 总结

    java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,...

    Java函数式编程(十一):遍历目录

    例如,以下代码会找出所有以`.java`结尾的文件: ```java Files.newDirectoryStream(Paths.get("fpij"), path -> path.toString().endsWith(".java")) .forEach(System.out::println); ``` 在这里,我们使用了`...

    java程序中处理一个包含诡异的不可见的字符。

    然后可以用十六进制转储工具查看这些字节,找出不寻常的值。 4. **日志记录**:在开发和调试过程中,将涉及到的字符串和变量值输出到日志,可以帮助识别潜在的问题。可以使用`System.out.println(new String(bytes,...

    Select_File.rar_select_file

    这些信息可以作为选择文件的标准,例如,你可以根据文件的修改日期来找出最近更新的文件。 4. 命令行工具:在命令行界面(如Windows的CMD或PowerShell,或Linux的Terminal),可以使用各种命令来查找和选择文件,如...

    Editplus 3[1].0

    这是因为 EditPlus 的语法是设置文件采用的是绝对路径,而在你设置了语法文件之后,再把程序复制到其它目录,因而导致 EditPlus 无法找到该语法文件。 解决办法: 在主程序目录里,找到 Setting.ini 这是 EditPlus ...

    ACCP5.0s1Java6-9章测试

    - **求最大值**:使用`Arrays.stream(arr).max().getAsInt()`可方便地找出数组中的最大值。 以上知识点是Java编程基础的重要组成部分,理解并掌握这些内容对于ACCP5.0s1的学习至关重要。通过不断的练习和测试,...

    dex2jar 0.0.9.15 版

    此外,安全研究人员也可以利用dex2jar来检测恶意软件的行为模式,找出潜在的安全漏洞。 在实际操作中,dex2jar的使用步骤如下: 1. 下载并解压dex2jar工具。 2. 将需要分析的DEX文件放置在同一目录下。 3. 打开...

    Python-查找iOS或Android项目未使用的png并支持删除

    接下来,我们将这个列表与之前找到的所有PNG文件列表进行对比,找出未被引用的PNG文件。 为避免误删,可以先将这些未使用的PNG文件移动到一个单独的备份目录,而不是直接删除。这样,如果发现有误报,可以轻松恢复...

    实现图片过滤功能.doc

    这段代码的用途可能是在一个包含多种文件类型的目录中,快速找出并处理所有的图片文件。例如,在一个图片分享网站,服务器可能需要只显示这些特定格式的图片,而忽略其他非图片文件。或者在移动应用中,当用户上传...

    2021-2022计算机二级等级考试试题及答案No.15573.docx

    6. 算法分析的目的是评估算法的效率,以便找出潜在的改进空间。其他选项不是算法分析的主要目的。 7. 封装是面向对象编程的重要特性,它提高了类的重用性,但并不意味着不允许子类覆盖或重载方法,也不意味着类在...

    IIS整合tomcat6图文教程

    3. **错误排查**:如果遇到问题,检查IIS和Tomcat的日志文件,找出错误原因,进行相应的修复。 4. **备份与更新**:在进行任何重大配置更改之前,记得备份原有配置,以防出现问题后能快速恢复。同时,保持ISAPI ...

    adb1.0.26包含fastboot.exe

    INSTALL_PARSE_FAILED_NOT_APK 指定路径不是文件,或不是以 .apk 结尾 INSTALL_PARSE_FAILED_BAD_MANIFEST 无法解析的 AndroidManifest.xml 文件 INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION 解析器遇到异常 ...

    错误代码中文查询GetLastError返回代码的含义

    25 - 驱动器无法找出磁盘上特定区域或磁道的位置。 26 - 无法访问指定的磁盘或软盘。 27 - 驱动器找不到请求的扇区。 28 - 打印机缺纸。 29 - 系统无法写入指定的设备。 30 - 系统无法从指定的设备上读取。 31 - 连...

    常用的60个Linux常用命令.zip

    50. **which**:找出命令的执行路径。 51. **whoami**:显示当前登录的用户名。 52. **date**:显示或设置系统日期和时间。 53. **cal**:显示日历。 54. **bc**:提供交互式的计算器功能。 55. **dd**:数据转换和...

    单元测试利器JUnit4_opt1

    【JUnit 4 初步了解】 JUnit 是一个广泛使用的...单元测试不仅可以帮助找出代码中的错误,还能作为文档,说明代码应该如何工作,从而提高代码的可维护性。记得每次修改代码后都运行测试,确保改动不会破坏现有的功能。

    jprofiler6

    JProfiler6是一款强大的Java性能分析工具,专为开发者提供内存和CPU监控功能,帮助优化应用性能,找出潜在的瓶颈。本文将详细介绍如何在Linux环境下安装JProfiler6,设置环境变量以及配置与Tomcat的集成。 首先,...

Global site tag (gtag.js) - Google Analytics