readToEndAllocOptions
Deprecated in favor of Reader.
Function parameters
Parameters
Type definitions in this namespace
Types
- Permissions
- Cross-platform representation of permissions on a file.
- Reader
- Memoizes key information about a file handle such as:
Functions in this namespace
Functions
- close
- Upon success, the stream is in an uninitialized state.
- sync
- Blocks until all pending file contents and metadata modifications
- isTty
- Test whether the file refers to a terminal.
- getOrEnableAnsiEscapeSupport
- Returns whether or not ANSI escape codes will be treated as such,
- supportsAnsiEscapeCodes
- Test whether ANSI escape codes will be treated as such without
- setEndPos
- Shrinks or expands the file.
- seekBy
- Repositions read/write file offset relative to the current offset.
- seekFromEnd
- Repositions read/write file offset relative to the end.
- seekTo
- Repositions read/write file offset relative to the beginning.
- getPos
- TODO: integrate with async I/O
- getEndPos
- TODO: integrate with async I/O
- mode
- TODO: integrate with async I/O
- stat
- Returns `Stat` containing basic information about the `File`.
- chmod
- Changes the mode of the file.
- chown
- Changes the owner and group of the file.
- setPermissions
- Sets permissions according to the provided `Permissions` struct.
- updateTimes
- The underlying file system may have a different granularity than nanoseconds,
- readToEndAlloc
- Deprecated in favor of `Reader`.
- readToEndAllocOptions
- Deprecated in favor of `Reader`.
- readAll
- Deprecated in favor of `Reader`.
- pread
- On Windows, this function currently does alter the file pointer.
- preadAll
- Deprecated in favor of `Reader`.
- readv
- See https://github.com/ziglang/zig/issues/7699
- readvAll
- Deprecated in favor of `Reader`.
- preadv
- See https://github.com/ziglang/zig/issues/7699
- preadvAll
- Deprecated in favor of `Reader`.
- writeAll
- Deprecated in favor of `Writer`.
- pwrite
- On Windows, this function currently does alter the file pointer.
- pwriteAll
- Deprecated in favor of `Writer`.
- writev
- See https://github.com/ziglang/zig/issues/7699
- writevAll
- Deprecated in favor of `Writer`.
- pwritev
- See https://github.com/ziglang/zig/issues/7699
- pwritevAll
- Deprecated in favor of `Writer`.
- copyRange
- Deprecated in favor of `Writer`.
- copyRangeAll
- Deprecated in favor of `Writer`.
- deprecatedReader
- Deprecated in favor of `Reader`.
- deprecatedWriter
- Deprecated in favor of `Writer`.
- reader
- Defaults to positional reading; falls back to streaming.
- readerStreaming
- Positional is more threadsafe, since the global seek position is not
- writer
- Defaults to positional reading; falls back to streaming.
- writerStreaming
- Positional is more threadsafe, since the global seek position is not
- lock
- Blocks when an incompatible lock is held by another process.
- unlock
- Assumes the file is locked.
- tryLock
- Attempts to obtain a lock, returning `true` if the lock is
- downgradeLock
- Assumes the file is already locked in exclusive mode.
Error sets in this namespace
Error Sets
= posix.fd_t
Values
Source
Implementation
pub fn readToEndAllocOptions(
self: File,
allocator: Allocator,
max_bytes: usize,
size_hint: ?usize,
comptime alignment: Alignment,
comptime optional_sentinel: ?u8,
) !(if (optional_sentinel) |s| [:s]align(alignment.toByteUnits()) u8 else []align(alignment.toByteUnits()) u8) {
// If no size hint is provided fall back to the size=0 code path
const size = size_hint orelse 0;
// The file size returned by stat is used as hint to set the buffer
// size. If the reported size is zero, as it happens on Linux for files
// in /proc, a small buffer is allocated instead.
const initial_cap = @min((if (size > 0) size else 1024), max_bytes) + @intFromBool(optional_sentinel != null);
var array_list = try std.array_list.AlignedManaged(u8, alignment).initCapacity(allocator, initial_cap);
defer array_list.deinit();
self.deprecatedReader().readAllArrayListAligned(alignment, &array_list, max_bytes) catch |err| switch (err) {
error.StreamTooLong => return error.FileTooBig,
else => |e| return e,
};
if (optional_sentinel) |sentinel| {
return try array_list.toOwnedSliceSentinel(sentinel);
} else {
return try array_list.toOwnedSlice();
}
}