(五)hadoop路径读取文件的通配符
2017-10-11 09:44
337 查看
一、通配符
Demo
二、PathFilter过滤
通配格式不是总能够精确地描述我们想要访问的文件集合。比如,使用通配格式排除一个特定的文件就不太可能。FileSystem中的listStatus()和globStatus()方法提供了可选的PathFilter对象,使我们能够通过编程方式控制匹配:
PathFilter与java.io.FileFilter一样,是Path对象而不是File对象。
展示了一个PathFilter,用于排除匹配一个正则表达式的路径:
这个过滤器只留下与正则表达式不同的文件。我们将它与预先剔除一些文件集合的通配配合:过滤器用来优化结果。例如:
通配符 | 注解 |
---|---|
* | 代表0到多个字符 |
? | 代表单一字符 |
[ ab ] | 代表字符类型,匹配{a,b}中的一个字符 |
[ ^ab ] | 代表不是{a,b}中的一个字符 |
[ a-b ] | 代表匹配一个a到b之间的字符包括ab,ASCII代码在a-b之间的 |
[ ^a-b] | 代表不在a到b之间的字符包括ab |
{a,b} | 代表匹配a或b的一个语句 |
\c | 代表转义字符匹配原字符c |
public class myHdfsGlobe { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Configuration configuration = new Configuration(); FileSystem fileSystem = FileSystem.get(configuration); FileStatus[] fileStatus = fileSystem.globStatus(new Path("/hello[0-9]")); System.out.println(1); for (FileStatus fileStatus1 : fileStatus) { System.out.println("文件路径:" + fileStatus1.getPath()); System.out.println("块的大小:" + fileStatus1.getBlockSize()); System.out.println("文件所有者:" + fileStatus1.getOwner() + ":" + fileStatus1.getGroup()); System.out.println("文件权限:" + fileStatus1.getPermission()); System.out.println("文件长度:" + fileStatus1.getLen()); System.out.println("备份数:" + fileStatus1.getReplication()); System.out.println("修改时间:" + fileStatus1.getModificationTime()); } } }
二、PathFilter过滤
通配格式不是总能够精确地描述我们想要访问的文件集合。比如,使用通配格式排除一个特定的文件就不太可能。FileSystem中的listStatus()和globStatus()方法提供了可选的PathFilter对象,使我们能够通过编程方式控制匹配:
package org.apache.hadoop.fs; public interface PathFilter { boolean accept(Path path); }
PathFilter与java.io.FileFilter一样,是Path对象而不是File对象。
展示了一个PathFilter,用于排除匹配一个正则表达式的路径:
public class RegexExcludePathFilter implements PathFilter { private final String regex; public RegexExcludePathFilter(String regex) { this.regex = regex; } public boolean accept(Path path) { return !path.toString().matches(regex); } }
这个过滤器只留下与正则表达式不同的文件。我们将它与预先剔除一些文件集合的通配配合:过滤器用来优化结果。例如:
fs.globStatus( new Path("/2007/*/*"), new RegexExcludeFilter("^.*/2007/12/31$") )
相关文章推荐
- hadoop输入路径读取文件的正则通配符
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop和spark中读取文件通配符使用举例
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- Hadoop 和 spark 读取多个文件通配符规则(正则表达式)joe
- 在Eclipse里面怎么读取当前包下1个txt文件的路径