Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java NIO中的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模式来搜索指定的目录及其子目录。
  1. package com.javapapers.java.nio;
  2. import java.io.IOException;
  3. import java.nio.file.FileSystems;
  4. import java.nio.file.FileVisitResult;
  5. import java.nio.file.Files;
  6. import java.nio.file.Path;
  7. import java.nio.file.PathMatcher;
  8. import java.nio.file.Paths;
  9. import java.nio.file.SimpleFileVisitor;
  10. import java.nio.file.attribute.BasicFileAttributes;
  11. public class FileGlobNIO {
  12.     public static void main(String args[]) throws IOException {
  13.         String glob = "glob:**/*.zip";
  14.         String path = "D:/";
  15.         match(glob, path);
  16.     }
  17.     public static void match(String glob, String location) throws IOException {
  18.        
  19.         final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher(
  20.                 glob);
  21.        
  22.         Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
  23.            
  24.             @Override
  25.             public FileVisitResult visitFile(Path path,
  26.                     BasicFileAttributes attrs) throws IOException {
  27.                 if (pathMatcher.matches(path)) {
  28.                     System.out.println(path);
  29.                 }
  30.                 return FileVisitResult.CONTINUE;
  31.             }
  32.             @Override
  33.             public FileVisitResult visitFileFailed(Path file, IOException exc)
  34.                     throws IOException {
  35.                 return FileVisitResult.CONTINUE;
  36.             }
  37.         });
  38.     }
  39. }

程序输出如下:
  1. D:AndroidLocation.zip
  2. D:Eclipse7dec2014eclipse-jee-kepler-R-win32-x86_64workspace.metadata.mylyn.tasks.xml.zip
  3. D:Eclipse7dec2014eclipse-jee-kepler-R-win32-x86_64workspace.metadata.mylyn epositories.xml.zip
  4. D:Eclipse7dec2014eclipse-jee-kepler-R-win32-x86_64workspace.metadata.mylyn asks.xml.zip
  5. D:mysql-workbench-community-6.2.5-winx64-noinstall.zip
  6. D:workspaceAndroidAndroidChatBubbles-master.zip
  7. D:workspaceAndroidGoogle ChatXMPPChatDemo.zip
  8. D:workspaceAndroidUpdate-Android-UI-from-a-Service-master.zip
  9. D:workspaceAndroid ChatAndroidDialog.zip
  10. D:workspaceAndroid WearAndroidWearPreview.zip
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120498.htm