`
JavaSam
  • 浏览: 951763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA I/O 非常实用的目录列表器

    博客分类:
  • JAVA
阅读更多
package com.file;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;

public final class Directory {
	public static File[] local(File dir, final String regex) {
		return dir.listFiles(new FilenameFilter() {
			private Pattern pattern = Pattern.compile(regex);
			public boolean accept(File dir, String name) {
				return pattern.matcher(name).matches();
			}
		});
	}

	public static File[] local(String path, final String regex) {
		return local(new File(path), regex);
	}

	public static class TreeInfo implements Iterable<File> {
		public List<File> files = new ArrayList<File>();
		public List<File> dirs = new ArrayList<File>();

		public Iterator<File> iterator() {
			return files.iterator();
		}

		void addAll(TreeInfo other) {
			files.addAll(other.files);
			dirs.addAll(other.dirs);
		}

		public String toString() {
			return "dirs:" + PPrint.pformat(dirs) + "\n\nfiles:"
					+ PPrint.pformat(files);
		}

	}
	public static TreeInfo walk(String start, String regex) {
		return recurseDirs(new File(start), regex);
	}

	public static TreeInfo walk(String start) {
		return recurseDirs(new File(start), ".*");
	}

	public static TreeInfo walk(File start, String regex) {
		return recurseDirs(start, regex);
	}

	public static TreeInfo walk(File start) {
		return recurseDirs(start, ".*");
	}

	static TreeInfo recurseDirs(File startDir, String regex) {
		TreeInfo result = new TreeInfo();
		for (File item : startDir.listFiles()) {
			if (item.isDirectory()) {
				result.dirs.add(item);
				result.addAll(recurseDirs(item, regex));
			} else {
				if (item.getName().matches(regex))
					result.files.add(item);
			}
		}
		return result;
	}
	/**
	 * 调用方式
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(local(".","D.*"));
		System.out.println(walk(".","D.*\\.java"));
		System.out.println(walk(".", "[Dd].*\\.*"));
		System.out.println(walk(".",".*\\.class"));
	}
}
 
分享到:
评论

相关推荐

    android 快速的搜索手机文件引擎 java I/O的应用

    Java I/O(输入/输出)库在其中起着至关重要的作用,因为它允许我们高效地读取、写入和处理文件系统数据。本篇文章将深入探讨如何利用Java I/O在Android上实现高效的文件搜索功能。 1. **Java I/O基础** - Java I/...

    android 查找程序根目录下所有文件 java i/o与ListActivity的结合

    接下来,我们将使用Java的I/O流来读取和遍历目录。`java.io.File`类提供了遍历目录和文件的方法。例如,我们可以创建一个`File`对象,代表根目录,然后调用`listFiles()`方法获取所有子文件或目录。这个方法返回一个...

    【经典外文翻译】-java(译文+英文)毕业论文.doc

    在 Java I/O 系统中,File 类是一个非常重要的类,它可以用来表示文件或目录,并提供了多种方法来处理文件和目录操作。例如,File 类提供了 list() 方法来获取目录下的文件列表,并提供了 renameTo() 方法来重命名...

    【经典外文翻译】-java(译文-英文)毕业论文.doc

    在 Java 中,目录列表器是一个非常重要的功能,它可以用来查询目录中的文件列表。有两个办法可以实现目录列表器,一是不带参数调用 list() 方法,返回的是 File 对象所含内容的完整清单;另一个办法是使用"目录过滤...

    Java毕业设计外文翻译

    ### Java I/O系统详解 ...通过上述分析,我们可以更深入地理解Java I/O系统的结构与工作原理,这对于从事Java开发工作的工程师来说是非常有用的。掌握这些知识将有助于在实际项目中更加高效地处理各类I/O操作问题。

    【经典外文翻译】--java(译文+英文)—-毕业论文设计.doc

    在目录列表器中,我们可以使用 File 类和 filenamesFilter 接口来实现目录列表器的功能。例如,我们可以使用 DirList 类来显示目录中的文件列表,并使用 AlphabeticComparator 来对结果进行排序。 Java I/O 系统和...

    一本输入输出流 I/O的书

    ### 输入输出流(I/O)概览 ...综上所述,Java 中的 I/O 流体系非常强大且全面,覆盖了几乎所有常见的文件读写需求。通过学习和理解这些基础知识,初学者可以更好地掌握如何使用 Java 来处理文件和数据。

    JAVA JDK学习笔记i\o部分

    ### JAVA JDK 学习笔记 i/o 部分 #### 输入/输出 (I/O) 概述 在程序设计中,输入/输出(Input/Output,简称I/O)是指计算机程序与外部设备(如硬盘、视频设备、网络主机等)之间进行数据交换的过程。由于涉及的...

    Java外文翻.doc

    如果需要获取特定类型的文件列表,则可以使用目录过滤器。 - **FilenameFilter 接口**: 用于过滤文件名。该接口定义了一个 `accept(File dir, String name)` 方法,接受一个 `File` 对象和一个字符串参数,用于判断...

    IO 目录列表器 回调函数 Thinking in java 4

    总的来说,"IO 目录列表器 回调函数 Thinking in java 4"这个主题涵盖了Java I/O操作,特别是目录遍历,以及如何利用回调函数(如Lambda表达式)来处理目录中的每个文件。这样的技术在实际项目中非常常见,比如日志...

    Java免费范文精选.docx

    这可以与其他Java I/O类结合使用,例如`File.list(filter)`,以获取特定目录中所有`.java`文件的列表。 Java I/O系统还包括其他关键类,如`InputStream`和`OutputStream`用于字节流操作,`Reader`和`Writer`用于...

    Java目录监视器源程序

    Java目录监视器是一个基于Java编程语言实现的小型实用工具,其主要功能是实时监控指定的文件目录,并在每次扫描间隔(如5秒)后报告目录内文件大小的变化以及文件数量的增减。这个应用程序对于开发者来说非常有用,...

    java——IO流技术.pdf

    - `listFiles()` - 获取目录下的`File`对象列表。 #### 四、文件编码与字符集 在处理文本文件时,正确的字符集选择至关重要。Java支持多种字符集: - **US-ASCII**: 英文ASCII码,仅适用于英文文本。 - **ISO-...

    JAVA_API1.6文档(中文)

    javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I/O。 javax.management 提供 Java Management Extensions 的核心类。 javax.management.loading 提供实现高级动态加载的类...

    JAVA文件管理器

    总的来说,JAVA文件管理器是一个利用JAVA强大I/O和加密功能的实用工具,通过命令行提供便捷的文件操作服务。对于开发者来说,理解和实现这样的系统有助于深化对JAVA I/O和文件操作的理解,同时也提高了在没有图形...

    java入门经典(完整版高清晰带目录书签)

    6. **Java I/O**:输入输出(I/O)是程序与外界进行交互的重要手段,Java中的I/O流用于处理各种数据的读写操作。 7. **多线程编程**:了解和掌握如何在Java中创建和管理线程,以及如何解决多线程编程中常见的并发...

    几本有帮助的电子书

    在压缩包文件名称列表中,我们看到"java_io",这几乎可以肯定这个压缩包里包含的是关于Java I/O的资料。可能包括: 1. Java I/O基础:介绍基本的输入输出流概念,如字节流(InputStream/OutputStream)和字符流...

    java遍历文件目录生成树结构txt文件

    总的来说,这个任务涉及到Java I/O操作、文件系统导航以及文本文件的生成。通过这个过程,开发者可以清晰地了解文件系统的层次结构,这对于文件管理和自动化任务非常有用。在实际开发中,这种技术常被用于生成项目...

    java开发坦克大战(实用应用文).doc

    本文档为 Java 开发坦克大战实用应用文,旨在提供一个实用的 Java 编程指南,涵盖了 Java 面向对象编程、界面编程、绘图技术、多线程、文件 I/O 操作、数据库等多个方面的技术。 目录目录: 1. 好玩 Java 开发...

Global site tag (gtag.js) - Google Analytics