使用Java API操作HDFS时,_方法用于获取文件列表?

如题所述

当使用 Java API 操作 HDFS 时,可以使用 FileSystem.listFiles() 方法来获取文件列表。该方法接受一个 Path 对象,表示要列举文件的目录,并返回一个 RemoteIterator<LocatedFileStatus> 对象,该对象可用于迭代目录中的文件。
例如,下面的代码演示了如何使用 listFiles() 方法来获取 HDFS 上的文件列表:
// 定义 HDFS 连接配置
Configuration conf = new Configuration();
// 获取 HDFS FileSystem 对象
FileSystem fs = FileSystem.get(conf);
// 定义要列举文件的目录
Path dirPath = new Path("/user/hadoop");
// 获取文件列表
RemoteIterator<LocatedFileStatus> fileIter = fs.listFiles(dirPath, true);
// 遍历文件列表
while (fileIter.hasNext()) {
// 获取当前文件信息
LocatedFileStatus fileStatus = fileIter.next();
// 输出文件名称和大小
System.out.println(fileStatus.getPath().getName() + " : " + fileStatus.getLen());
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-11
在 Java API 中,可以使用 FileSystem.listFiles() 方法来获取 HDFS 上文件的列表。该方法接受一个路径作为参数,并返回一个包含文件信息的迭代器。您可以使用该迭代器来遍历 HDFS 上的文件,并获取每个文件的名称,大小等信息。例如,以下代码展示了如何使用 FileSystem.listFiles() 方法来获取 HDFS 上的文件列表:
Path path = new Path("/path/to/directory");
FileSystem fs = FileSystem.get(new Configuration());
RemoteIterator<LocatedFileStatus> fileStatusIterator = fs.listFiles(path, true);
while (fileStatusIterator.hasNext()) {
LocatedFileStatus fileStatus = fileStatusIterator.next();
String fileName = fileStatus.getPath().getName();
long fileSize = fileStatus.getLen();
// do something with the file name and size
}
在上面的代码中,我们首先使用 Path 类来指定要获取文件列表的目录路径。然后,我们使用 FileSystem 类来获取 HDFS 文件系统的实例。接下来,我们调用 FileSystem.listFiles() 方法来获取该目录中的文件列表。最后,我们使用 RemoteIterator 来遍历文件列表,并获取每个文件的名称和大小。
第2个回答  2022-12-09
FileSystem类的listStatus()方法用于获取文件列表。
相似回答