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模式来搜索指定的目录及其子目录。
-
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:\Eclipse\7dec2014\eclipse-jee-kepler-R-win32-x86_64\workspace\.metadata\.mylyn\.tasks.xml.zip
-
D:\Eclipse\7dec2014\eclipse-jee-kepler-R-win32-x86_64\workspace\.metadata\.mylyn\repositories.xml.zip
-
D:\Eclipse\7dec2014\eclipse-jee-kepler-R-win32-x86_64\workspace\.metadata\.mylyn\tasks.xml.zip
-
D:\mysql-workbench-community-6.2.5-winx64-noinstall.zip
-
D:\workspace\Android\AndroidChatBubbles-master.zip
-
D:\workspace\Android\Google Chat\XMPPChatDemo.zip
-
D:\workspace\Android\Update-Android-UI-from-a-Service-master.zip
-
D:\workspace\Android Chat\AndroidDialog.zip
-
D:\workspace\Android Wear\AndroidWearPreview.zip
阅读(4886) | 评论(0) | 转发(0) |