std.Io.Dir 相对于目录打开路径,std.Io.File 表示打开的文件句柄。每个操作都接收同一个 std.Io 上下文。本例写入、关闭、重新打开并读取临时文件,最后删除它。

//! Use std.Io.Dir and std.Io.File handles for a complete file round trip.

const std = @import("std");

pub fn main(init: std.process.Init) !void {
    const io = init.io;
    const path = "zig-cookbook-io-demo.txt";
    defer std.Io.Dir.cwd().deleteFile(io, path) catch {};

    {
        var file = try std.Io.Dir.cwd().createFile(io, path, .{});
        defer file.close(io);
        try file.writeStreamingAll(io, "written through an Io.File handle\n");
    }

    var reader_buffer: [128]u8 = undefined;
    var reader = (try std.Io.Dir.cwd().openFile(io, path, .{})).reader(io, &reader_buffer);
    defer reader.file.close(io);

    const contents = try reader.interface.allocRemaining(init.gpa, .limited(reader_buffer.len));
    defer init.gpa.free(contents);
    std.debug.print("{s}", .{contents});
}