HDFS之FileStatus
任何文件系统的一个重要特性都是提供其目录结构浏览和检索它所存文件和目录相关信息的功能。FileStatus对象封装了文件系统中文件和目录的元数据,包括文件的长度、块大小、备份数、修改时间、所有者以及权限等信息。
FileStatus对象由FileSystem的getFileStatus()方法获得,调用该方法的时候要把文件的Path传进去。
例子:打印输出某个文件的所有信息
1 package com.hdfs; 2 3 import org.apache.hadoop.conf.Configuration; 4 import org.apache.hadoop.fs.FSDataInputStream; 5 import org.apache.hadoop.fs.FSDataOutputStream; 6 import org.apache.hadoop.fs.FileStatus; 7 import org.apache.hadoop.fs.FileSystem; 8 import org.apache.hadoop.fs.FileUtil; 9 import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; 10 import org.apache.hadoop.fs.Path; 11 import org.apache.hadoop.io.IOUtils; 12 import org.apache.hadoop.util.Progressable; 13 14 public class HdfsTest1 { 15 //显示文件所有信息 16 public static void fileInfo(String path) throws IOException{ 17 Configuration conf = new Configuration(); 18 FileSystem fs = FileSystem.get(conf); 19 Path p = new Path(path); 20 //FileStatus对象封装了文件的和目录的额元数据,包括文件长度、块大小、权限等信息 21 FileStatus fileStatus = fs.getFileStatus(p); 22 System.out.println(“文件路径:”+fileStatus.getPath()); 23 System.out.println(“块的大小:”+fileStatus.getBlockSize()); 24 System.out.println(“文件所有者:”+fileStatus.getOwner()+”:”+fileStatus.getGroup()); 25 System.out.println(“文件权限:”+fileStatus.getPermission()); 26 System.out.println(“文件长度:”+fileStatus.getLen()); 27 System.out.println(“备份数:”+fileStatus.getReplication()); 28 System.out.println(“修改时间:”+fileStatus.getModificationTime()); 29 } 30 public static void main(String[] args) throws IOException { 31 fileInfo(“/user/hadoop/aa.mp4”); 32 } 33 34 }
输出结果为:
文件路径:hdfs://master:9000/user/hadoop/aa.mp4
块的大小:67108864
文件所有者:hadoop:supergroup
文件权限:rw-r–r–
文件长度:76805248
备份数:3
修改时间:1371484526483

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中的文件进行操作的过程。 对分HDFS中的文件操作主要涉及一下几个类: Configuration类:该类的对象封转了客户端或者服务器的配置。 FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);通过FileSystem的静态方法get获得该对象。 FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。 具体如何对文件操作清下下面例子: 1 package com.hdfs; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStream; 6 7 import org.ap...
- 下一篇
HDFS中PathFilter类
在单个操作中处理一批文件,这是很常见的需求。比如说处理日志的MapReduce作业可能需要分析一个月内包含在大量目录中的日志文件。在一 个表达式中使用通配符在匹配多个文件时比较方便的,无需列举每个文件和目录来指定输入。hadoop为执行通配提供了两个FIleSystem方法: 1 public FileStatus[] globStatus(Path pathPattern) throw IOException 2 public FileStatus[] globStatus(Path pathPattern, PathFilter filter) throw IOException globStatus()方法返回与路径想匹配的所有文件的FileStatus对象数组,并按路径排序。hadoop所支持的通配符与Unix bash相同。 第二个方法传了一个PathFilter对象作为参数,PathFilter可以进一步对匹配进行限制。PathFilter是一个接口,里面只有一个方法accept(Path path)。 下面看一个例子演示PathFilter的作用: RegexExclud...
相关文章
文章评论
共有0条评论来说两句吧...