Zig 如何遍歷一個文件夾?

今天來給大家介紹一個實用功能,如何遍歷一個文件夾。

Dir 裏提供了一個方便的 walk 方法,它可以直接實現這個目的:

const std = @import("std");
const fs = std.fs;
const print = std.debug.print;
pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer if (gpa.deinit() != .ok) @panic("leak");
    const allocator = gpa.allocator();
    // In order to walk the directry, `iterate` must be set to true.
    var dir = try fs.cwd().openDir("zig-out", .{ .iterate = true });
    defer dir.close();
    var walker = try dir.walk(allocator);
    defer walker.deinit();
    while (try walker.next()) |entry| {
        print("path: {s}, basename:{s}, type:{s}\n", .{
            entry.path,
            entry.basename,
            @tagName(entry.kind),
        });
    }
}

返回的文件順序未定義,如果對返回條目的順序有任何要求,如按字母順序或時間順序,則按此進行排序。 否則,就按未排序的原始順序返回。

參考資料

[1]

供稿,分享:https://ziglang.cc/contributing

[2]

開源項目:https://ask.ziglang.cc/github

[3]

微信羣:https://ask.ziglang.cc/weixin

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/k3qHMTPsECnB3oeY-nKKgQ