如何让Julia的readdir()函数区分文件和目录?
Julia
readdir() 区分文件与目录的实现方案 readdir() 本身没有内置配置项可以直接返回条目的类型标识,你可以通过以下两种常用方式实现需求:
方法1:配合文件类型判断函数直接过滤或标记
- 核心逻辑:对
readdir()返回的每个条目,调用isdir()/isfile()判断类型,你可以选择仅过滤出目标类型的条目,或者给所有条目打上类型标记 - 基础示例:
target_dir = "./your_target_dir" # 替换为实际目标目录路径 # 1. 仅过滤出所有目录 only_dirs = filter(name -> isdir(joinpath(target_dir, name)), readdir(target_dir)) # 2. 仅过滤出所有普通文件 only_files = filter(name -> isfile(joinpath(target_dir, name)), readdir(target_dir)) # 3. 给所有条目打上类型标记 entries_with_type = [ (name = name, type = isdir(joinpath(target_dir, name)) ? "目录" : "文件") for name in readdir(target_dir) ]
优化技巧:
readdir()支持join=true参数,开启后会直接返回条目的完整路径,无需手动拼接路径:# 简化后的过滤写法 only_dirs = filter(isdir, readdir(target_dir, join=true)) only_files = filter(isfile, readdir(target_dir, join=true))
方法2:获取完整文件元信息(支持识别更多文件类型)
如果你需要同时获取文件大小、修改时间等更多属性,或者需要识别软链接、设备文件等特殊类型,可以调用stat()函数获取条目完整元数据:
target_dir = "./your_target_dir" for entry_path in readdir(target_dir, join=true) stat_info = stat(entry_path) if isdir(stat_info) println("$(entry_path):目录") elseif isfile(stat_info) println("$(entry_path):普通文件") elseif islink(stat_info) println("$(entry_path):软链接") else println("$(entry_path):其他特殊文件类型") end end
内容的提问来源于stack exchange,提问作者cybervigilante
相关产品推荐
相关产品推荐

