如何使用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
相关产品推荐
相关产品推荐

