`

Stream-->Directory

 
阅读更多
public 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 SimpleFormatter formater = new SimpleFormatter();
        
        public Iterator<File> iterator()
        {
            return files.iterator();
        }
        
        void addAll(TreeInfo other)
        {
            files.addAll(other.files);
            dirs.addAll(other.dirs);
        }
        
        public String toString()
        {
            return "dirs: " + dirs.toString() + "\n\nfiles: " + files.toString();
        }
        
    }
    
    // 从给定路径开始遍历
    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(String start)
    {
        return recurseDirs(new File(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;
    }
    
    public static void main(String[] args)
    {
        if (args.length == 0)
        {
            System.out.println(walk("."));
        }
        else
        {
            for (String arg : args)
            {
                System.out.println(walk(arg));
            }
        }
    }
}
 
分享到:
评论

相关推荐

    java8stream源码-hadoop-install-guide:Hadoop安装指南

    java8流源码Hadoop集群安装 ...local-directory &gt; / &lt; folder-to-copy &gt; &lt; docker-name/docker-id &gt; :/ &lt; docker-container-folder &gt; # e.g docker cp /local/folder/to/copy hdp-master:/opt # From Docke

    ProjectOZ

    as well as development of the first projects.&lt;br&gt;&lt;br&gt;If you want to build and play with the code, you need the July WRK for the tools:&lt;br&gt; set wrk=the WRK directory&lt;br&gt; set projectoz=the ProjectOZ ...

    fs-directory-stream:流fs.readdir

    npm install fs-directory-stream 如果您的目录包含大量目录/文件,并且您不想一次将它们全部读入ram,则很有用。 用法 var createDirectoryStream = require ( 'fs-directory-stream' ) createDirectoryStream ( ...

    libnvinfer.so.7

    deepstream-app: error while loading shared libraries: libnvinfer.so.7: cannot open shared object file: No such file or directory

    实时ETL工具-StreamSets操作手册.docx

    可以选择 Directory 或者 Select Origin &gt; Directory,添加一个目录,并填写 Files Directory 和 File Name Pattern 等属性。 7. 文件目录和修改属性 在添加文件目录时,需要填写 Files Directory 和 File Name ...

    livestream-gatsby-themes:演示如何构建Gatsby主题,子主题和使用主题的网站的源代码-How to use the source code

    # Move into the new directory cd livestream-gatsby-themes/ # Install dependencies yarn # Start the site on http://localhost:8000 yarn workspace site develop 如果这是您第一次使用Yarn工作区, 。 链接和...

    使用FFMPEG解码视频之保存成图片

    if (stream-&gt;codec-&gt;codec_type == AVMEDIA_TYPE_VIDEO) { AVCodecContext *codecCtx = stream-&gt;codec; AVCodec *codec = avcodec_find_decoder(codecCtx-&gt;codec_id); if (!codec || avcodec_open2(codecCtx, ...

    ICS delphixe10源码版

    ICS - Internet Component Suite - V8 - Delphi 7 to RAD Studio 10 Seattle ======================================================================= ...Rename the old ICS directory and unzip to...

    struts2 文件上传与下载

    -- 设置最大上传文件大小 --&gt; &lt;/interceptor-ref&gt; &lt;result name="success"&gt;/success.jsp&lt;/result&gt; &lt;result name="input"&gt;/upload.jsp&lt;/result&gt; &lt;/action&gt; &lt;/package&gt; ``` 当文件成功上传后,我们通常会将其移动...

    应用Dephi 开发佳能照相机API

    {****************************************************************************** * * * PROJECT : EOS Digital Software Development Kit EDSDK * * NAME : EDSDKApi.pas * * * * Description: This is the ...

    Java文件上传servlet接口

    .filter(part -&gt; part.getName().equals("file")) // 检查是否为上传文件部分 .collect(Collectors.toList()); if (parts.isEmpty()) { // 处理错误,如没有文件上传 } for (Part part : parts) { String ...

    Java Spring Boot应用程序中实现文件上传和下载功能

    -- Spring WebSocket Starter 为WebSocket提供支持,虽然这里不直接使用,但为了完整的示例添加 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-websocket...

    jqq-stream-utils:James Q Quick实时流的流bot实用程序

    SOUND_EFFECTS_DIRECTORY-存储声音效果的目录 色相灯 HUE_LIGHT_IDS-灯泡ID的逗号分隔列表HUE_USERNAME-色相桥的用户名HUE_BRIDGE_IP-色相桥的本地IP 椒盐脆饼 TWITCH_ID-Twitch用户的ID OBS OBS_ADDRESS-OBS Web套...

    struts2.0上传下载实例

    -- 1MB --&gt; &lt;param name="allowedTypes"&gt;image/jpeg,image/png,application/pdf&lt;/param&gt; &lt;/interceptor-ref&gt; &lt;result name="success"&gt;/success.jsp&lt;/result&gt; &lt;result name="input"&gt;/upload.jsp&lt;/result&gt; ...

    hls-segmenter:将视频文件拆分为 HLS 段的工具

    hls-分段器将视频文件拆分为 HSL 段的工具(仅支持 H264 和 AAC 格式)。... -p, --output-dir DIR Directory to store the HLS segments. -n, --stream-name NAME Name of the HLS stream. -u, --url-prefix URL

    基于mediastreamer2的网络电话实现流程以及源码库

    error: /user/include/python2.7/pyconfig.h:15:52: fatal error: arm-linux-gnueabi/python2.7/pyconfig.h: No such file or directory compilation terminated. 分析::找不到arm-linux-gnueabi/python2.7/...

    torrent-mount:使用 torrent-stream 和 fuse 实时安装 torrent(或磁力链接)作为文件系统。 又名疯狂科学!

    xt=urn:btih:ef330b39f4801d25b4245212e75a38634bfc856e Usage: torrent-mount &lt;source&gt;... [options]source .torrent file or magnet link to openOptions:-m PATH, --mount PATH Mount location path [directory] ...

    java8stream源码-java8-design-patterns:练习java8并理解设计模式参考

    '删除现在被忽略的目录“some-directory”' git push origin master ###java 8 学习点任务: 溪流 拉姆达 可选的 @新技术点: Spring boot,快速建立web服务。 @下一个任务( 下周 25/07~26/07.2016) : 聚合器-...

    strut2的上传下载

    -- 设置最大上传大小 --&gt; &lt;/interceptor-ref&gt; &lt;result name="success"&gt;/success.jsp&lt;/result&gt; &lt;/action&gt; ``` #### 1.3 HTML表单 创建一个HTML表单,使用`enctype="multipart/form-data"`指定多部分表单数据,...

    jqweui上传图片功能-asp.net core

    var filePath = Path.Combine(Directory.GetCurrentDirectory(), "uploads", file.FileName); using (var stream = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(stream); } // ...

Global site tag (gtag.js) - Google Analytics