You have been zigged (series): 파일 내용 읽기

작성자

카테고리:

← 피드로
DEV Community · Black Tornado · 2026-06-13 개발(SW)

Lets explore how to read contents of a text file and print it out in stdout. To do this we will use Dir.openFile() function and Reader.takeDelimiterExclusive() function. Lets first save a demo text file as test.txt in the same folder as where the program lives and have some lorem ipsum in it.

// filestdio_text__main.zig
const std = @import("std");

pub fn main(init: std.process.Init) !void {
    var stderr_buffer: [1024]u8 = undefined;
    var stderr_file_writer = std.Io.File.Writer.init(std.Io.File.stderr(), init.io, &stderr_buffer);
    const stderr_writer = &stderr_file_writer.interface;

    const commandline_args = try init.minimal.args.toSlice(init.arena.allocator());
    if (commandline_args.len != 2) { // exe name and filename
        try stderr_writer.print("Usage: filestdio_text__main <filename>n", .{});
        try stderr_writer.flush();
        return;
    }

    const file = try std.Io.Dir.cwd().openFile(init.io, commandline_args[1], .{});

    var file_buffer: [1024]u8 = undefined;
    var file_file_reader = std.Io.File.Reader.init(file, &file_buffer);
    var file_reader = &file_file_reader.interface;
    const file_content = try file_reader.takeDelimiterExclusive('x00');

    var stdout_buffer: [1024]u8 = undefined;
    var stdout_file_writer = std.Io.File.Writer.init(std.Io.File.stdout(), init.io, &stdout_buffer);
    const stdout_writer = &stdout_file_writer.interface;

    try stdout_writer.print("{s}", .{file_content});
    try stdout_writer.flush();
}

Enter fullscreen mode Exit fullscreen mode

Upon running this program using zig run filestdio_text__main.zig -- test.txt we can see the output in terminal (the contents of test.txt).

Thanks for reading. To be continued.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다