由stat函数混淆

时间:2016-05-11 03:16:46

标签: julia

我试图检测给定路径是文件还是目录:

map(stat, readdir("./"))

#=
 StatStruct(mode=040775, size=4096)
 StatStruct(mode=040775, size=4096)
=#

这是正确的,我的cwd中有两个目录。但是,当我尝试stat目录时:

map(stat, readdir("./mydir"))

我得到了

#=
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
 StatStruct(mode=000000, size=0)
=#

这对我毫无意义。我在mydir中有文件和文件夹。发生了什么事?

1 个答案:

答案 0 :(得分:5)

查看readdir("./mydir")的输出是什么 - 它只是该文件夹中的文件名,没有mydir/前置。您正在使用来自不同目录的文件名从当前工作目录调用stat

为了实现此目的,您需要移至mydir或手动将mydir/添加到您的文件名中:

cd("./mydir") do
    map(stat, readdir())
end

map(f -> stat(joinpath("mydir", f)), readdir("./mydir"))