File module

file_write

procedure2 overloadsSource

Writes all of data to file. Returns false when the file is not open or the write fails or stops short.

file_write :: (file: *File, data: string) -> bool

An empty string succeeds without touching the file. After a failure part of the data may have been written.

Parameters

file: *File
data: string

Returns

bool
Example↗
#import "Extensions/Environment";
base := environment_variable("TMPDIR");
if base == "" base = environment_variable("TEMP");
if base == "" base = "/tmp";
path := tprint("%/jai-doc-write-string.bin", base);
defer file_delete(path);
file, ok := file_open(path, for_writing = true);
assert(ok);
assert(file_write(*file, "hello "));
assert(file_write(*file, "world"));
file_close(*file);
text, read_ok := read_entire_file(path);
assert(read_ok && text == "hello world");
free(text);
file_write :: (file: *File, builder: *String_Builder, do_reset := true) -> bool

Writes the content of builder to file, then resets the builder unless do_reset is false.

Returns false when the builder has failed or a write fails; an empty builder succeeds. The builder is reset even on failure, and it is still the caller's to free with free_buffers.

Parameters

file: *File
builder: *String_Builder
do_reset := true

Returns

bool
Example↗
#import "Extensions/Environment";
base := environment_variable("TMPDIR");
if base == "" base = environment_variable("TEMP");
if base == "" base = "/tmp";
path := tprint("%/jai-doc-write-builder.bin", base);
defer file_delete(path);
builder: String_Builder;
print_to_builder(*builder, "%-%", 1, 2);
file, ok := file_open(path, for_writing = true);
assert(ok);
assert(file_write(*file, *builder));
file_close(*file);
free_buffers(*builder);
text, read_ok := read_entire_file(path);
assert(read_ok && text == "1-2");
free(text);

See also