显示 HDFS 中的指定文件的读写权限、大小、修改时间、路径等信息。用java写出代码+注释
时间: 2024-10-28 10:10:22 浏览: 18
利用JAVA代码将本地文件传入HDFS中
在Java中,可以使用Apache Hadoop的`org.apache.hadoop.fs.FileSystem`和`org.apache.hadoop.fs.Path`类来获取HDFS文件的信息。下面是一个简单的示例,展示如何获取文件的权限、大小、修改时间和路径:
```java
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HDFSInfo {
public static void main(String[] args) throws IOException {
// 设置Hadoop配置
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
// 指定HDFS文件路径
String hdfsPath = "hdfs://your_hdfs_url/path/to/your/file.txt"; // 替换为实际HDFS路径
// 创建Path对象
Path filePath = new Path(hdfsPath);
// 获取文件信息
FileStatus status = fs.getFileStatus(filePath);
// 输出文件信息
System.out.println("权限: " + status.getPermission().toString()); // 文件权限
System.out.println("大小: " + formatSize(status.getLen())); // 文件大小(单位B)
System.out.println("修改时间: " + status.getModificationTime() + "毫秒"); // 修改时间
System.out.println("路径: " + status.getPath().toString()); // 文件路径
// 闭合连接
fs.close();
}
// 将字节数转换为更友好的显示格式
private static String formatSize(long size) {
if(size <= 0) return "0";
final int KB = 1024, MB = KB * KB, GB = MB * KB, TB = GB * KB, PB = TB * KB;
if(size < KB) return size + " B";
if(size < MB) return size / KB + " KB";
if(size < MB) return size / MB + " MB";
if(size < GB) return size / GB + " GB";
if(size < TB) return size / TB + " TB";
return size / PB + " PB";
}
}
```
**注解:**
1. 使用`FileSystem.getFileStatus(Path)`方法获取文件状态,该方法返回一个`FileStatus`对象,包含了文件的基本信息。
2. `getPermission().toString()`获取权限信息,如rwxr-xr-x。
3. `getLen()`返回文件大小,需要转换成用户友好的格式。
4. `getModificationTime()`返回文件的最后修改时间,以毫秒为单位。
阅读全文