`
lh870003574
  • 浏览: 24116 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

文件读写实用类

 
阅读更多

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++编译器中通过了测试,确保了在不同操作系统下的...

    大文件读写内存映射.rar

    在IT领域,尤其是在进行大规模数据处理时,内存映射(Memory Mapping)技术是一种高效且实用的方法,尤其在处理大文件时。本主题聚焦于Qt框架下如何利用内存映射进行大文件的读写操作。Qt是一个跨平台的C++库,提供...

    自己写的delphi下xml文件读写配置类

    本篇文章将深入探讨一个基于Delphi实现的XML文件读写配置类——XMLIniFiles.pas。这个类库的设计目的是为开发者提供一种类似于传统的.INI文件的操作方式,但利用XML的强大功能。 首先,我们来理解一下XML文件的基本...

    C++文件操作工具类

    2. **文件读写**:提供简单的读取和写入函数,如读取整行、写入字符串等,可能还支持二进制数据的读写。 3. **文件流管理**:自动打开和关闭文件流,确保资源的有效释放。 4. **错误处理**:在遇到文件操作异常时,...

    C++文件读写详解

    C++中的文件读写是程序开发中不可或缺的一部分,主要用于数据持久化存储。在这个主题中,我们将深入探讨C++中用于文件操作的三个主要类:ofstream、ifstream和fstream,以及它们的相关使用方法。 ofstream 类是专门...

    利用宏简化配置文件读写的类

    它很可能是实现配置文件读写功能的基础类定义。在C++中,使用宏可以实现代码的预处理,通过宏定义,我们可以创建模板化的函数或类,以处理配置文件中的键值对。宏可以避免重复的代码,并提供了一种方式来抽象出通用...

    一个java文本文件读写类

    在这个场景下,`TextFile`可能就是一个JavaBean,用来封装文件读写的业务逻辑。 首先,让我们深入理解Java中的文件读写。Java提供了一系列的类来处理文件操作,主要是在`java.io`包中,例如`File`, `FileReader`, `...

    自己封装的一些文件(夹)操作和txt文件读写的工具类 哈哈(ExtUtil0.2)

    在这个名为"哈哈(ExtUtil0.2)"的项目中,作者提供了一些自定义的工具类,专门用于简化这些常见的文件和文件夹操作,同时包含了对TXT文件的读写功能。下面我们将详细探讨这些知识点。 首先,工具类(Tool Class)...

    xml文件读写demo

    XML(eXtensible Markup Language)...总之,这个"xml文件读写demo"项目是一个学习和实践C#中XML操作的实用资源,涵盖了从基本的XML读写到高级的序列化技术,对于任何希望掌握XML处理的开发者来说都是宝贵的参考资料。

    跨平台的ini文件读写类

    标题中的“跨平台的ini文件读写类”指的是一个编程工具或库,它允许程序员在不同的操作系统(如Windows、Linux、macOS等)上读取和写入ini配置文件。Ini文件是一种常见的文本格式,用于存储应用程序的设置和配置信息...

    PropertyUtil配置文件读写工具类,超级简便的代码

    PropertyUtil配置文件读写工具类,超级简便的代码,超级实用

    ini文件读写工具

    2. 在需要使用ini文件读写的类或函数中,包含工具类的头文件。 3. 使用工具类提供的接口进行ini文件操作,例如初始化、读取、写入和保存更改。 这种工具类的实现提高了代码的可复用性和模块化,减少了因直接处理...

    读写csv文件类

    总结一下,本文介绍了如何在C++中利用`fstream`库封装CSV文件的读写操作,创建了`CsvReader`和`CsvWriter`两个类,实现了对CSV文件的便捷操作。这些技巧在实际项目中非常实用,特别是在数据分析、日志处理和数据导入...

    ini.cs 实用的INI读写类

    实用的INI读写类 ini 配置文件 读写 C# 实用的INI读写类 ini 配置文件 读写 C# 实用的INI读写类 ini 配置文件 读写 C#

    位图BMP格式图像文件处理类源码VC版.rar_bmp_vc 文件读写_位图 VC_位图读写操作_文件读写

    总的来说,BMP格式图像文件处理类为VC++开发人员提供了一种便捷的方式来处理BMP文件,使得图像的读写操作变得更加简单,同时也便于进行各种图像处理。这个压缩包中的源码是一个实用的工具,可以帮助开发者快速集成...

    TwinCAT2文件读写复制功能程序

    本压缩包提供了四个实用的TwinCAT2程序,分别涉及文件的复制、读写、磁盘空间检查以及批量删除,这些功能在实际的工控系统中具有很高的实用性。 1. cx1010的文件复制至工控机.pro:这个程序示例是关于如何将文件从...

    Android平台的txt文本文件读写操作

    ### Android平台的txt文本文件读写操作 #### 一、引言 在Android应用程序开发过程中,文本文件(如.txt格式)的读写操作是常见需求之一。这些操作可以帮助开发者存储临时数据、配置信息或者实现简单的文件共享功能...

    简洁好用的配置文件读写类-config

    在IT行业中,配置文件是应用...总的来说,这个配置文件读写类的设计和实现考虑到了易用性、效率和兼容性,是IT项目中非常实用的工具。对于开发者来说,能够快速、准确地管理和操作配置文件,无疑会大大提高其生产力。

    EVC读写文件方法使用CFile类

    以上就是EVC中使用CFile类进行文件读写的基本步骤和常见操作。通过熟练掌握这些知识点,你可以编写出高效、可靠的文件操作代码。在实际项目中,还需要考虑更多的细节,如错误恢复、内存管理、文件锁等,但这些基础...

    C#读写文件帮助类.doc

    ### C#中的文件读写操作详解 在C#编程中,对文件进行读写操作是一项基本且重要的功能。本文档“C#读写文件帮助类”提供了一个实用的类库,用于处理文本文件的创建、读取、写入以及删除等操作。下面将详细介绍这个...

Global site tag (gtag.js) - Google Analytics