package com.scnulh.util;
import java.util.List;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.regex.Pattern;
public class Directory {
public static class TreeInfo implements Iterable<File>{
public List<File> files=new ArrayList<File>();
public List<File> dirs=new ArrayList<File>();
@Override
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)+
"\nfiles:"+PPrint.pformat(files);
}
}
/**
* 递归生成目录及文件树
* @param startDir
* @param regex
* @return
*/
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;
}
public static TreeInfo walk(String start,String regex)
{
return recurseDirs(new File(start), regex);
}
public static TreeInfo walk(File start,String regex)
{
return recurseDirs(start, regex);
}
public static TreeInfo walk(File start)
{
return recurseDirs(start, ".*");
}
public static TreeInfo walk (String start)
{
return recurseDirs(new File(start), ".*");
}
public static File[] local(File dir,final String regex)
{
return dir.listFiles(new FilenameFilter() {
private Pattern pattern=Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return pattern.matcher(new File(name).getName()).matches();
}
});
}
public static File[] local(String path,final String regex)
{
return local(new File(path),regex);
}
public static void main(String[] args)
{
PPrint.pprint(Directory.walk(".").files);
for(File file:Directory.walk(".", ".*.*\\.class$"))
{
System.out.println(file);
}
}
}
分享到:
相关推荐
归档实用工具是一种在计算机操作中经常使用的软件,主要用于数据的整理、存储和传输。这里的“Launchpad.zip”是一个特定的归档文件,它采用流行的ZIP格式进行压缩,以减小文件大小,便于存储和分享。ZIP格式是众多...
需要连接到远程的SQL server 数据库,但却需要在本地安装SQL SERVERSERVER ,使用起来很不方便,于是在网上查了看有没有独立的SQL server 客户端网络实用工具,但在网上都是说将dbnetlib.dll,dbnmpntw.dll,ntwdblib.DLL...
"LABVIEW实用工具详解代码.rar"这个压缩包很可能包含了与LabVIEW相关的实用工具和示例代码,这些工具可能涵盖了多种功能,如数据处理、信号分析、界面设计等。通过学习和理解这些代码,用户可以更好地掌握LabVIEW的...
为了提高开发效率,程序员们常常会创建一些实用工具类库,如"C# Util",它整合了多种常用的功能模块,使得代码复用变得更为便捷。下面将详细阐述这个工具类库中的主要组成部分及其应用场景。 1. **Json**: JSON...
其中,ha_FtpList作为一款备受好评的实用工具,提供了本地和远程文件管理的强大功能。 ha_FtpList之所以被认为非常好用,是因为它结合了目录树和列表的优势,使用户能够同时享受树形结构的直观性和列表的简洁性。...
标题中的“VB写的实用工具,很经典哦……”揭示了这个压缩包文件包含了一系列由Visual Basic(VB)编程语言编写的实用程序。VB是微软公司推出的一种面向对象的编程语言,广泛应用于创建桌面应用程序。这些工具可能...
在网络安全和网站管理领域,扫描整个网站目录的工具是一种非常实用的软件,主要用于探测和枚举一个网站的所有可访问的文件和目录。这样的工具可以帮助管理员找出潜在的安全漏洞、未授权的访问点或者不正确的权限设置...
总结,"百度网盘目录结构生成工具"是一款实用且高效的管理工具,它让复杂庞大的文件系统变得井然有序,使用户在百度网盘的使用体验得到显著提升。通过合理利用这一工具,我们可以更好地管理和维护自己的云存储空间,...
总结起来,永硕网盘目录克隆工具v1.2是一款实用的数据管理工具,通过目录克隆功能,帮助用户轻松备份和迁移网盘数据,确保数据安全。配合清晰的使用说明、文件完整性验证以及可能的界面定制,它为用户提供了一站式的...
【管家婆V3和A8创建虚拟目录数据库工具】是一款专为管家婆V3和A8版本用户设计的实用工具,旨在帮助用户便捷地创建和管理虚拟目录数据库。这款工具对于那些需要处理大量数据和多数据库环境的企业用户来说,尤其具有...
Profile Relocator是一款针对Windows XP、Vista、7和8系统设计的实用工具,它能够安全地移动用户的个人配置文件(Profile)到一个新的位置,而不会破坏系统的正常运行。在进行迁移过程中,该工具会确保所有相关的...
"黑科技工具箱【内含大量实用工具】.rar"是一个包含多种实用工具的压缩文件。这个工具箱可能集合了各种高效、独特或者不常见的软件工具,旨在为用户解决日常或特定的技术问题。从文件名列表来看,我们可以推测其中...
Java 实用文件小工具提供了批量提取功能,用户可以指定某个目录或特定的文件类型,工具会自动搜索并提取这些文件到指定的目标位置。这一功能在处理大量相似文件时显得尤为高效,尤其适用于备份、迁移或者整理文件库...
这时,一款名为Treesize的工具就显得尤为实用。Treesize是一款专门针对Windows系统的目录大小查看工具,它能帮助用户快速定位并分析磁盘空间的占用情况,为磁盘清理提供准确的数据支持。 Treesize的主要功能集中在...
本文将深入探讨一种名为“实用文件,文件夹比较工具”的应用,它被描述为比传统的compare工具更为好用,安装简单且功能全面。这款工具专为程序员设计,能够高效地比较单个文件和整个目录,揭示两者之间的详细差异。 ...
关闭步骤与启用过程类似,但只需在“目录实用工具”中选择“编辑”> “停用 Root 用户”。 关闭 Root 账户是确保系统安全的重要步骤,因为高权限账户容易成为恶意软件或攻击者的目标。保持良好的安全习惯,仅在必要...
8. **启用Root用户**:现在,转到“目录实用工具”的顶部菜单栏,选择“编辑”菜单,然后选择“启用Root用户”。这一步是关键,因为它会创建并设置`root`用户的账户。 9. **设置Root密码**:在弹出的对话框中,为`...
4. **合并功能**:除了显示差异,WinDiff还提供了合并功能,用户可以选择将一个文件或目录的更改应用到另一个,这对于版本控制和团队协作非常实用。 5. **批处理能力**:对于需要对比大量文件或目录的情况,WinDiff...
系统目录迁移工具是一款专为IT专业人士设计的实用软件,它能够帮助用户高效、安全地将一个系统的目录结构及其内容迁移到另一个系统中。这个过程在IT环境中常常是必要的,例如在升级操作系统、更换硬件设备或者整合...