You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pike语言获取指定路径下的文件名列表?

嗨,刚接触Pike就直接上手项目,勇气可嘉!关于获取指定路径下的文件名列表,Pike里有几个实用的方法,我给你详细说明下:

方法一:使用Directory类遍历目录

这是Pike处理目录操作的标准方式,代码直观且易读:

int main() {
    // Windows路径可以用正斜杠(不用转义),或者双反斜杠
    string target_path = "C:/Users/Downloads";
    
    // 初始化Directory对象
    Directory dir = Directory(target_path);
    
    // 获取目录下所有条目(文件+子目录)
    array(string) all_entries = dir->get_entries();
    
    // 遍历打印每个条目
    foreach(all_entries, string entry) {
        write(entry + "\n");
    }
    
    return 0;
}

如果只想获取文件(排除子目录),可以给get_entries()加过滤参数:

array(string) only_files = dir->get_entries(Directory::FILES_ONLY);

对应的,如果你想只获取子目录,可以用Directory::DIRECTORIES_ONLY参数。

方法二:使用glob函数匹配文件

如果你需要更灵活的匹配(比如只找特定后缀的文件),glob函数会更方便:

int main() {
    // 用通配符*匹配路径下所有文件
    string pattern = "C:/Users/Downloads/*";
    
    // 获取匹配的完整路径列表
    array(string) full_paths = glob(pattern);
    
    // 提取文件名(去掉路径部分)并打印
    foreach(full_paths, string path) {
        write(basename(path) + "\n");
    }
    
    return 0;
}

比如你想只获取所有.pdf文件,只需要把pattern改成C:/Users/Downloads/*.pdf就行。

额外注意事项
  • 路径格式:Windows下Pike支持正斜杠/,比双反斜杠\\更省心,不用额外转义。
  • 错误处理:如果怕路径不存在导致报错,可以提前检查:
    string target_path = "C:/Users/Downloads";
    if (!file_exists(target_path)) {
        write("Error: 指定路径不存在!\n");
        return 1;
    }
    

内容的提问来源于stack exchange,提问作者shani m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:20:30