可以使用 org.apache.hadoop.fs.FileStatus 类来输出文件在hdfs上的状态,包括路径、大小、权限、创建时间、是否为目录等许多信息,通过调用对应的 getXXX() 方法即可获取。

    你可以通过 FileSystem.listStatus(Path: path) 方法,传入一个路径,来获得一个 FileStatus 数组,通过遍历数组你就能输出所有匹配到的文件的信息。

    或者 你也可以用 FileSystem.getFileStatus(Path: path) 来获得单独一个目录或文件的 FileStatus。而非递归的数组。

    1. package HomeWork;
    2. import java.util.Scanner;
    3. import org.apache.hadoop.conf.Configuration;
    4. import org.apache.hadoop.fs.FileSystem;
    5. import org.apache.hadoop.fs.Path;
    6. import org.apache.hadoop.fs.FileStatus;
    7. public class quest04 {
    8. public static void main(String[] args) {
    9. System.out.println("请输入要查看的文件或路径:");
    10. Scanner scanner = new Scanner(System.in);
    11. String path = scanner.nextLine(); // hdfs的文件路径
    12. scanner.close();
    13. try {
    14. Configuration conf = new Configuration();
    15. conf.set("fs.defaultFS", "hdfs://localhost:9000");
    16. conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
    17. FileSystem fs = FileSystem.get(conf);
    18. FileStatus[] status = fs.listStatus(new Path(path));
    19. for (int i = 0; i < status.length; i++) {
    20. System.out.println("文件路径:"+status[i].getPath());
    21. System.out.println("读取权限:"+status[i].getPermission());
    22. System.out.println("大小:"+status[i].getBlockSize());
    23. System.out.println("创建时间:"+status[i].getModificationTime());
    24. }
    25. fs.close(); // 关闭hdfs
    26. } catch (Exception e) {
    27. e.printStackTrace();
    28. }
    29. }
    30. }