Function openFile [src]

Opens a file for reading or writing, without attempting to create a new file. To create a new file, see createFile. Call File.close to release the resource. Asserts that the path parameter has no null bytes. On Windows, sub_path should be encoded as WTF-8. On WASI, sub_path should be encoded as valid UTF-8. On other platforms, sub_path is an opaque sequence of bytes with no particular encoding.

Prototype

pub fn openFile(self: Dir, sub_path: []const u8, flags: File.OpenFlags) File.OpenError!File

Parameters

self: Dirsub_path: []const u8flags: File.OpenFlags

Source

pub fn openFile(self: Dir, sub_path: []const u8, flags: File.OpenFlags) File.OpenError!File { if (native_os == .windows) { const path_w = try windows.sliceToPrefixedFileW(self.fd, sub_path); return self.openFileW(path_w.span(), flags); } if (native_os == .wasi and !builtin.link_libc) { var base: std.os.wasi.rights_t = .{}; // POLL_FD_READWRITE only grants extra rights if the corresponding FD_READ and/or FD_WRITE // is also set. if (flags.isRead()) { base.FD_READ = true; base.FD_TELL = true; base.FD_SEEK = true; base.FD_FILESTAT_GET = true; base.POLL_FD_READWRITE = true; } if (flags.isWrite()) { base.FD_WRITE = true; base.FD_TELL = true; base.FD_SEEK = true; base.FD_DATASYNC = true; base.FD_FDSTAT_SET_FLAGS = true; base.FD_SYNC = true; base.FD_ALLOCATE = true; base.FD_ADVISE = true; base.FD_FILESTAT_SET_TIMES = true; base.FD_FILESTAT_SET_SIZE = true; base.POLL_FD_READWRITE = true; } const fd = try posix.openatWasi(self.fd, sub_path, .{}, .{}, .{}, base, .{}); return .{ .handle = fd }; } const path_c = try posix.toPosixPath(sub_path); return self.openFileZ(&path_c, flags); }