Search results

There are no results.

std.fs.file.WriteOnlyFile

class pub WriteOnlyFile

A file that can only be used for writes.

Fields

path

let pub @path: Path

The path of the file.

Static methods

append

Show source code
Hide source code
fn pub static append(path: Path) -> Result[WriteOnlyFile, Error] {
  match
    sys.open_file(
      path.to_string,
      read: false,
      write: true,
      append: true,
      truncate: false,
    )
  {
    case Ok(fd) -> Result.Ok(WriteOnlyFile(fd: fd, path: path))
    case Error(e) -> Result.Error(e)
  }
}
fn pub static append(path: Path) -> Result[WriteOnlyFile, Error]

Opens a file in append-only mode.

Examples

import std.fs.file (WriteOnlyFile)

WriteOnlyFile.append('/dev/null'.to_path)

new

Show source code
Hide source code
fn pub static new(path: Path) -> Result[WriteOnlyFile, Error] {
  match
    sys.open_file(
      path.to_string,
      read: false,
      write: true,
      append: false,
      truncate: true,
    )
  {
    case Ok(fd) -> Result.Ok(WriteOnlyFile(fd: fd, path: path))
    case Error(e) -> Result.Error(e)
  }
}
fn pub static new(path: Path) -> Result[WriteOnlyFile, Error]

Opens a file in write-only mode.

Examples

import std.fs.file (WriteOnlyFile)

WriteOnlyFile.new('/dev/null'.to_path)

Instance methods

flush

Show source code
Hide source code
fn pub mut flush -> Result[Nil, Error] {
  sys.flush_file(@fd)
}
fn pub mut flush -> Result[Nil, Error]

Flushes any pending writes to the file system.

Flushing writes is a potentially expensive operation, and unnecessarily calling this method may degrade performance.

When flushing data to disk it's important to remember that the actual behaviour may vary based on the type of file system, operating system and storage hardware that's used. In particular, it's possible for one of these components to say "Yup, I totally flushed the data, you're all good!" when in fact they have not fully flushed the data.

metadata

Show source code
Hide source code
fn pub metadata -> Result[Metadata, Error] {
  sys.file_metadata(@fd)
}
fn pub metadata -> Result[Metadata, Error]

Returns a metadata about the current file, such as its size and creation time.

Errors

This method returns an Error if the underlying system call fails, such as when the file no longer exists.

Examples

import std.fs.file (WriteOnlyFile)

WriteOnlyFile
  .new('/test.txt')
  .or_panic('failed to open the file')
  .metadata
  .or_panic('failed to get the metadata')
  .size # => 1234

print

Show source code
Hide source code
fn pub mut print(string: String) -> Result[Nil, Error] {
  write_string(string).then(fn (_) { write_string('\n') })
}
fn pub mut print(string: String) -> Result[Nil, Error]

Writes the entirety of string to the underlying stream, followed by writing a Unix newline to the stream.

seek

Show source code
Hide source code
fn pub mut seek(position: Int) -> Result[Int, Error] {
  sys.seek_to(@fd, position)
}
fn pub mut seek(position: Int) -> Result[Int, Error]

Seeks to the given byte offset, returning the new offset.

If position is negative, seeking is performed in reverse order relative to the end.

write_bytes

Show source code
Hide source code
fn pub mut write_bytes(bytes: ref ByteArray) -> Result[Nil, Error] {
  write_all_internal(bytes.to_pointer, bytes.size)
}
fn pub mut write_bytes(bytes: ref ByteArray) -> Result[Nil, Error]

Writes the entirety of bytes to the underlying stream.

Types implementing this method must guarantee that upon returning from this method, either all of the data is written and a Ok(Nil) is returned, or an Error(Error) is returned.

write_string

Show source code
Hide source code
fn pub mut write_string(string: String) -> Result[Nil, Error] {
  write_all_internal(string.to_pointer, string.size)
}
fn pub mut write_string(string: String) -> Result[Nil, Error]

Writes the entirety of string to the underlying stream.

See Write.write_bytes for more details.

Implemented traits

std.drop.

Drop

impl Drop for WriteOnlyFile
std.io.

Seek

impl Seek for WriteOnlyFile
std.io.

Write

impl Write for WriteOnlyFile