我在用hadoop的 FileSystem
( org.apache.hadoop.fs.FileSystem
)要递归列出目录下的所有文件,请执行以下操作:
FileSystem.listFiles(new Path("file:/my/path"), true)
但是,我有一个递归符号链接 /my/path/symlink -> /my/path
,和 listFiles
返回一个巨大的路径列表,如
/my/path/symlink
/my/path/symlink/symlink
/my/path/symlink/symlink/symlink
/my/path/symlink/symlink/symlink/symlink
/my/path/symlink/symlink/symlink/symlink/symlink
...
是否有一个标志或配置参数来防止这种情况?
我需要使用 FileSystem
因为我两者都用 hdfs:/
以及 file:/
路径。
1条答案
按热度按时间rggaifut1#
有一次,我需要在一个路径下递归地列出目录,我根据filesystem.java中listfiles的代码编写了自己的listdirectories函数。
如果你看代码,它是非常简单的,只是你应该避免重复出现在一个filestatus如果它是一个符号链接。但是需要注意的是,您不会得到包含父符号链接的路径。
您应该更改此函数:
例如: