任何文件系統的一個重要特性都是提供其目錄結構瀏覽和檢索它所存文件和目錄相關信息的功能。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