FileStatus类介绍

FileStatus对象封装了文件系统中文件和目录的元数据,包括文件的长度、块大小、备份数、修改时间、所有者以及权限等信息。

FileStatus对象一般由FileSystem的getFileStatus()方法获得,调用该方法的时候要把文件的Path传递进去。

FileStatus字段解析

private Path path;                  // Path路径
private long length;                // 文件长度
private boolean isdir;              // 是都是目录
private short block_replication;    // 块的复本数
private long blocksize;             // 块大小
private long modification_time;     // 修改时间
private long access_time;           // 访问时间
private FsPermission permission;    // 权限
private String owner;               // 所有者
private String group;               // 所在组
private Path symlink;               // 符号链接,如果isdir为true那么symlink必须为null

FileStatus构造函数

public FileStatus()
public FileStatus(FileStatus other)
public FileStatus(long length, boolean isdir, int block_replication,long blocksize, long modification_time, Path path)
public FileStatus(long length, boolean isdir,int block_replication,long blocksize, long modification_time, long access_time,FsPermission permission, String owner, String group,Path path)
public FileStatus(long length, boolean isdir,int block_replication,long blocksize, long modification_time, long access_time,FsPermission permission, String owner, String group,Path symlink,Path path)// 上面所有的构造函数最后都是调用的最后一个构造函数,所以下面只列出最后一个构造函数的源码public FileStatus(long length, boolean isdir,int block_replication,long blocksize, long modification_time, long access_time,FsPermission permission, String owner, String group,Path symlink,Path path) {this.length = length;this.isdir = isdir;this.block_replication = (short)block_replication;this.blocksize = blocksize;this.modification_time = modification_time;this.access_time = access_time;if (permission != null) {this.permission = permission;} else if (isdir) {this.permission = FsPermission.getDirDefault();} else if (symlink!=null) {this.permission = FsPermission.getDefault();} else {this.permission = FsPermission.getFileDefault();}this.owner = (owner == null) ? "" : owner;this.group = (group == null) ? "" : group;this.symlink = symlink;this.path = path;// 如果isdir为true则symlink必须为null// 如果isdir为false,则表示为是一个文件或者符号链接// 如果smylink为null,那么它就是一个文件assert (isdir && symlink == null) || !isdir;}

FileStatus常用函数介绍

public int compareTo(Object o)          // 比较两个对象是否指向相同的路径
public long getAccessTime()             // 得到访问时间
public long getBlockSize()              // 得到块大小
public String getGroup()                // 得到组名
public long getLen()                    // 得到文件大小
public long getModificationTime()       // 得到修改时间
public String getOwner()                // 获取所有者信息
public Path getPath()                   // 获取Path路径
public FsPermission getPermission()     // 获取权限信息
public short getReplication()           // 获取块副本数
public path getsymlink()                // 获取符号链接的Path路径
public boolean isSymlink()              // 是否为符号链接
public void readFields(DataInput in)    // 序列化读取字段
public void setPath(final Path p)       // 设置Path路径
public void setSymlink(final Path p)    // 设置符号链接
public void write(DataOutput out)       // 序列化写入字段

代码示例

package com.hdfs;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;public class HdfsTest1 {//显示文件所有信息public static void fileInfo(String path) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path p = new Path(path);//FileStatus对象封装了文件的和目录的额元数据,包括文件长度、块大小、权限等信息FileStatus fileStatus = fs.getFileStatus(p);System.out.println("文件路径:"+fileStatus.getPath());System.out.println("块的大小:"+fileStatus.getBlockSize());System.out.println("文件所有者:"+fileStatus.getOwner()+":"+fileStatus.getGroup());System.out.println("文件权限:"+fileStatus.getPermission());System.out.println("文件长度:"+fileStatus.getLen());System.out.println("备份数:"+fileStatus.getReplication());System.out.println("修改时间:"+fileStatus.getModificationTime());}public static void main(String[] args) throws IOException {fileInfo("/user/hadoop/aa.mp4");}}

输出结果如下:

文件路径:hdfs://master:9000/user/hadoop/aa.mp4
块的大小:67108864
文件所有者:hadoop:supergroup
文件权限:rw-r--r--
文件长度:76805248
备份数:3
修改时间:1371484526483

参考博文

http://www.cnblogs.com/liuling/p/2013-6-18-01.html

FileStatus类介绍相关推荐

  1. Hbase API中常用类介绍和使用

    网上Hbase的介绍有很多,案例也不少.自己写了个Demo,进行一些简单的总结. HBase 常用类介绍. JAVA API 和 HBase数据库模型之间的关系 JAVA 类 Hbase 数据模型 H ...

  2. C#中的Dictionary字典类介绍(转载)

    C#中的Dictionary字典类介绍 关键字:C# Dictionary 字典  作者:txw1958 原文:http://www.cnblogs.com/txw1958/archive/2012/ ...

  3. Java中BigDecimal类介绍及用法

    Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...

  4. C++/C--istringstream、ostringstream、stringstream 类介绍【转载】

    文章目录 1 C++的输入输出分为三种: 1.1 基于控制台的I/O 1.2 基于文件的I/O 1.3 基于字符串的I/O 2 头文件 3 功能 4 具体分析 4.1 istringstream类 4 ...

  5. Java核心类库-IO-File类介绍和路径分割符

    Java的IO:类和接口存在于Java.io包中 讲IO操作之前,必须要先讲File类(文件/目录) File类介绍和路径分割符: File类是IO包中唯一表示磁盘文件和磁盘目录的对象的路径. 该类包 ...

  6. Android Canvas类介绍和Android Draw Rect 坐标图示

    当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了.在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西.除了在画布上绘制之外,还需要设置一些关于画 ...

  7. CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

    前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...

  8. POI 导出导入工具类介绍

    介绍: Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI ...

  9. 深入类加载器-类加载器作用,类缓存、类加载器的层次结构、ClassLoader类介绍、代理模式之双亲委派机制

    1.类加载器的作用 类加载器的作用是将class字节码文件加载到内存中,并将这些静态数据转化为方法区中的运行时数据结构,同时在堆中生成代表这个类的java.lang.Class对象,作为访问方法区中数 ...

  10. String Utils 工具类介绍大全 isAnyEmpty isAnyBlank stripToNull 等,一篇文章找全所有答案!

    StringUtils工具类介绍 前言 1.isEmpty() 2.isNotEmpty() 3.isAnyEmpty() 4.isNoneEmpty() 5.isBlank() 6.isNotBla ...

最新文章

  1. LeCun预言的自监督模型来了:首个多模态高性能自监督算法,语音、图像文本全部SOTA...
  2. EasyUI表单验证,自定义插件验证,自定义js插件验证,远程验证,常见手机号,中英文,qq等验证规则验证...
  3. 使用mybatis中的自定义TypeHandler处理PostgreSQL中的Json类型
  4. android更换工具链
  5. IntelliJ IDEA for Mac在MacOS模式下的编辑快捷键(Editing Shortcut)
  6. Swift项目中不能定义OC类继承Swift类
  7. 杭电2019多校第八场 Acesrc and Good Numbers——思维打表oeis
  8. 使用电脑远程操作Jetson nano桌面1--操作流程
  9. ppt怎么修改页面布局
  10. 微信开发 (四) 微信网页授权
  11. 字符串输入的2种常用方法详解
  12. VRRPv2和VRRPv3对比区别
  13. 你也可以看懂,量子力学的困惑,测不准原理 薛定谔的猫 !
  14. 常见的NoSQL数据库介绍
  15. SYDZ 辗转相除法的原理与实现
  16. oepncv 移动目标追踪, 背景消除法,MOG,KNN
  17. 漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例
  18. 房地产业务学习 04 -房企信息化 谁忽悠了谁
  19. QGIS在地图上绘制经纬网
  20. 【JEECG技术文档】Jeecg高级查询器

热门文章

  1. Python安装过程中出现“找不到指定的路径”的解决办法
  2. 日志追踪-Java字节码-类文件结构
  3. CSS3(新增样式)
  4. 印度人为什么立刀切菜_印度人的刀功有多厉害?看到一刀刮掉的鱼鳞和碎洋葱,我彻底服了...
  5. latex入门(一)——latex网站overleaf
  6. [蓝桥杯]打水问题、夺宝奇兵、调手表(c++详解)
  7. win2003服务器安全设置技术实例(一)
  8. 2021-02-13L:1652 2.08---2.141576L
  9. Android手机玩8086汇编
  10. 阿里云窄带高清的演进与思考