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 codeHide 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 codeHide 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 codeHide 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 codeHide 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
Show source codeHide 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 codeHide 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 codeHide 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 codeHide 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
Drop
impl Drop for WriteOnlyFile
Seek
impl Seek for WriteOnlyFile
Write
impl Write for WriteOnlyFile