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);
}
}
}
分享到:
相关推荐
本项目名为"文件读写类",表明它提供了一种抽象化的、跨平台的方式来处理文件的读取和写入任务。这个类库已经在Windows的Visual C++(VC)环境下以及Linux系统下的g++编译器中通过了测试,确保了在不同操作系统下的...
在IT领域,尤其是在进行大规模数据处理时,内存映射(Memory Mapping)技术是一种高效且实用的方法,尤其在处理大文件时。本主题聚焦于Qt框架下如何利用内存映射进行大文件的读写操作。Qt是一个跨平台的C++库,提供...
本篇文章将深入探讨一个基于Delphi实现的XML文件读写配置类——XMLIniFiles.pas。这个类库的设计目的是为开发者提供一种类似于传统的.INI文件的操作方式,但利用XML的强大功能。 首先,我们来理解一下XML文件的基本...
2. **文件读写**:提供简单的读取和写入函数,如读取整行、写入字符串等,可能还支持二进制数据的读写。 3. **文件流管理**:自动打开和关闭文件流,确保资源的有效释放。 4. **错误处理**:在遇到文件操作异常时,...
C++中的文件读写是程序开发中不可或缺的一部分,主要用于数据持久化存储。在这个主题中,我们将深入探讨C++中用于文件操作的三个主要类:ofstream、ifstream和fstream,以及它们的相关使用方法。 ofstream 类是专门...
它很可能是实现配置文件读写功能的基础类定义。在C++中,使用宏可以实现代码的预处理,通过宏定义,我们可以创建模板化的函数或类,以处理配置文件中的键值对。宏可以避免重复的代码,并提供了一种方式来抽象出通用...
在这个场景下,`TextFile`可能就是一个JavaBean,用来封装文件读写的业务逻辑。 首先,让我们深入理解Java中的文件读写。Java提供了一系列的类来处理文件操作,主要是在`java.io`包中,例如`File`, `FileReader`, `...
在这个名为"哈哈(ExtUtil0.2)"的项目中,作者提供了一些自定义的工具类,专门用于简化这些常见的文件和文件夹操作,同时包含了对TXT文件的读写功能。下面我们将详细探讨这些知识点。 首先,工具类(Tool Class)...
XML(eXtensible Markup Language)...总之,这个"xml文件读写demo"项目是一个学习和实践C#中XML操作的实用资源,涵盖了从基本的XML读写到高级的序列化技术,对于任何希望掌握XML处理的开发者来说都是宝贵的参考资料。
标题中的“跨平台的ini文件读写类”指的是一个编程工具或库,它允许程序员在不同的操作系统(如Windows、Linux、macOS等)上读取和写入ini配置文件。Ini文件是一种常见的文本格式,用于存储应用程序的设置和配置信息...
PropertyUtil配置文件读写工具类,超级简便的代码,超级实用
2. 在需要使用ini文件读写的类或函数中,包含工具类的头文件。 3. 使用工具类提供的接口进行ini文件操作,例如初始化、读取、写入和保存更改。 这种工具类的实现提高了代码的可复用性和模块化,减少了因直接处理...
总结一下,本文介绍了如何在C++中利用`fstream`库封装CSV文件的读写操作,创建了`CsvReader`和`CsvWriter`两个类,实现了对CSV文件的便捷操作。这些技巧在实际项目中非常实用,特别是在数据分析、日志处理和数据导入...
实用的INI读写类 ini 配置文件 读写 C# 实用的INI读写类 ini 配置文件 读写 C# 实用的INI读写类 ini 配置文件 读写 C#
总的来说,BMP格式图像文件处理类为VC++开发人员提供了一种便捷的方式来处理BMP文件,使得图像的读写操作变得更加简单,同时也便于进行各种图像处理。这个压缩包中的源码是一个实用的工具,可以帮助开发者快速集成...
本压缩包提供了四个实用的TwinCAT2程序,分别涉及文件的复制、读写、磁盘空间检查以及批量删除,这些功能在实际的工控系统中具有很高的实用性。 1. cx1010的文件复制至工控机.pro:这个程序示例是关于如何将文件从...
### Android平台的txt文本文件读写操作 #### 一、引言 在Android应用程序开发过程中,文本文件(如.txt格式)的读写操作是常见需求之一。这些操作可以帮助开发者存储临时数据、配置信息或者实现简单的文件共享功能...
在IT行业中,配置文件是应用...总的来说,这个配置文件读写类的设计和实现考虑到了易用性、效率和兼容性,是IT项目中非常实用的工具。对于开发者来说,能够快速、准确地管理和操作配置文件,无疑会大大提高其生产力。
以上就是EVC中使用CFile类进行文件读写的基本步骤和常见操作。通过熟练掌握这些知识点,你可以编写出高效、可靠的文件操作代码。在实际项目中,还需要考虑更多的细节,如错误恢复、内存管理、文件锁等,但这些基础...
### C#中的文件读写操作详解 在C#编程中,对文件进行读写操作是一项基本且重要的功能。本文档“C#读写文件帮助类”提供了一个实用的类库,用于处理文本文件的创建、读取、写入以及删除等操作。下面将详细介绍这个...