加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

Java NIO中的Glob模式分析

发布时间:2021-11-19 12:43:19 所属栏目:教程 来源:互联网
导读:一、什么是Glob? 在编程设计中,Glob是一种模式,它使用通配符来指定文件名。例如:*.Java就是一个简单的Glob,它指定了所有扩展名为java的文件。Glob模式中广泛使用了两个通配符*和?。其中星号表示任意的字符或字符组成字符串,而问号则表示任意单个字符。

一、什么是Glob?
 
在编程设计中,Glob是一种模式,它使用通配符来指定文件名。例如:*.Java就是一个简单的Glob,它指定了所有扩展名为“java”的文件。Glob模式中广泛使用了两个通配符“*”和“?”。其中星号表示“任意的字符或字符组成字符串”,而问号则表示“任意单个字符”。
 
Glob模式源于Unix操作系统,Unix提供了一个“global命令”,它可以缩写为glob。Glob模式与正则表达式类似,但它的功能有限。
 
二、Java NIO中的Glob模式
 
Java SE7的NIO库中引入了Glob模式,它用于FileSystem类,在PathMatcher getPathMatcher(String syntaxAndPattern)方法中使用。Glob可以作为参数传递给PathMatcher。同样地,在Files类中也可以使用Glob来遍历整个目录。
 
下面是Java NIO中使用的Glob模式:
 
 
 
三、Java NIO中的Glob示例
 
下面是一个Java程序,使用了Glob模式来搜索指定的目录及其子目录。
 
package com.javapapers.java.nio;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class FileGlobNIO {
    public static void main(String args[]) throws IOException {
        String glob = "glob:**/*.zip";
        String path = "D:/";
        match(glob, path);
    }
    public static void match(String glob, String location) throws IOException {
       
        final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher(
                glob);
       
        Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
           
            @Override
            public FileVisitResult visitFile(Path path,
                    BasicFileAttributes attrs) throws IOException {
                if (pathMatcher.matches(path)) {
                    System.out.println(path);
                }
                return FileVisitResult.CONTINUE;
            }
            @Override
            public FileVisitResult visitFileFailed(Path file, IOException exc)
                    throws IOException {
                return FileVisitResult.CONTINUE;
            }
        });
    }
}
 
程序输出如下:
 
D:AndroidLocation.zip
D:Eclipse7dec2014eclipse-jee-kepler-R-win32-x86_64workspace.metadata.mylyn.tasks.xml.zip
D:Eclipse7dec2014eclipse-jee-kepler-R-win32-x86_64workspace.metadata.mylynrepositories.xml.zip
D:Eclipse7dec2014eclipse-jee-kepler-R-win32-x86_64workspace.metadata.mylyntasks.xml.zip
D:mysql-workbench-community-6.2.5-winx64-noinstall.zip
D:workspaceAndroidAndroidChatBubbles-master.zip
D:workspaceAndroidGoogle ChatXMPPChatDemo.zip
D:workspaceAndroidUpdate-Android-UI-from-a-Service-master.zip
D:workspaceAndroid ChatAndroidDialog.zip
D:workspaceAndroid WearAndroidWearPreview.zip

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读