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});
}