Hadoop - FileSystem.listFiles - 不列出目录

时间:2014-07-03 13:11:35

标签: hadoop hdfs

我正在研究这种方法:FileSystem.listFiles(Path f, boolean recursive)

  

列出给定路径中文件的状态和阻止位置。如果路径是目录,如果recursive为false,则返回目录中的文件;如果recursive为true,则返回以该路径为根的子树中的文件。如果路径是文件,则返回文件的状态和块位置。

我正在测试该方法,似乎它没有返回给定目录的子目录。这是设计的(似乎它虽然它的java.io对手不是这样工作)?如果这个限制是设计的,那么如果我想列出所有子目录,还有什么选择呢?

另一种方法FileSystem.listStatus(Path f)也没有返回子目录的状态。我错过了什么?

2 个答案:

答案 0 :(得分:2)

你得到任何类型的错误/异常吗?

您可能使用了以下代码:

FileStatus[] status = fs.listStatus(path);
for (int i=0;i<status.length;i++){
    FSDataInputStream fSDataInputStream = fs.open(status[i].getPath());
}

答案 1 :(得分:0)

如果您需要列出子目录和文件,请使用FileSystem.listLocatedStatus而不是FileSystem.listStatus