filewrite — Write text or raw bytes to files in MATLAB and RunMat.
filewrite(filename, data) writes text or raw byte content to a file and returns the number of bytes written. By default it overwrites existing content; use 'WriteMode','append' to append. Encoding options and input coercions follow MATLAB semantics.
Syntax
count = filewrite(filename, data)
count = filewrite(filename, data, encoding)
count = filewrite(filename, data, "Encoding", encoding)
count = filewrite(filename, data, ..., "WriteMode", mode)Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
filename | Any | Yes | — | Path to target file. |
data | Any | Yes | — | Text or uint8-compatible data to write. |
encoding | StringScalar | No | "auto" | Positional encoding label. |
name | PropertyName | Variadic | — | Option name: 'Encoding' or 'WriteMode'. |
value | PropertyValue | Variadic | — | Option value associated with option name. |
Returns
| Name | Type | Description |
|---|---|---|
count | NumericScalar | Number of bytes written. |
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:filewrite:InvalidInput | Filename/data argument constraints are violated. | filewrite: invalid input arguments |
RunMat:filewrite:InvalidOption | Name/value options are malformed or unsupported. | filewrite: invalid option configuration |
RunMat:filewrite:InvalidData | Input data cannot be converted to writable bytes. | filewrite: unsupported data payload |
RunMat:filewrite:EncodeFailed | Encoding selected output bytes/chars fails. | filewrite: failed to encode payload |
RunMat:filewrite:IoFailure | Filesystem open/write/flush operation fails. | filewrite: file I/O failed |
| — | Internal runtime control-flow or conversion fails. | filewrite: internal error |
How filewrite works
- Accepts file names supplied as character vectors, string scalars, or scalar string arrays.
- Accepts data supplied as character vectors, string scalars, string arrays, or numeric arrays of bytes (
uint8/doublevalues in the range 0–255). Logical arrays map to bytes0and1. - By default the file is truncated (overwrite mode). Pass
'WriteMode','append'to add to an existing file. - Encoding is optional. Provide either a positional encoding argument or the
'Encoding', valuekeyword pair. Supported encodings mirrorfileread:auto(default),utf-8,ascii,latin1, andraw. - When writing text data with
filewriteandEncodingset toasciiorlatin1, an error is raised if any characters fall outside the permitted code page. - When writing raw numeric bytes, encoding is ignored except to validate ASCII requests.
- Returns the number of bytes written as a double scalar. Ignoring the output behaves like MATLAB (data is still written).
Does RunMat run filewrite on the GPU?
filewrite performs synchronous host file I/O. If either the path or data reside on the GPU (for example through lazy residency), RunMat gathers those values before performing the write. No GPU kernels are launched and providers do not need to implement specialised hooks for this builtin.
Examples
Write Text To A New File
bytes = filewrite("notes.txt", "Hello, RunMat!")Expected output:
bytes = 14Append Text Without Overwriting
filewrite("log.txt", "First line\n");
bytes = filewrite("log.txt", "Second line\n", 'WriteMode', 'append')Expected output:
bytes = 13Specify A Particular Encoding
bytes = filewrite("latin1.txt", ['E' 's' 'p' 'a' char(241) 'a'], 'Encoding', 'latin1')Expected output:
bytes = 6Write Raw Bytes From A Numeric Array
payload = [1 2 3 255];
bytes = filewrite("data.bin", payload, 'Encoding', 'raw')Expected output:
bytes = 4Export A String Array As Newline-Separated Text
lines = ["alpha", "beta", "gamma"];
bytes = filewrite("items.txt", lines)Expected output:
bytes = 16Handle Invalid ASCII Characters
try
filewrite("ascii.txt", ['c' 'a' 'f' char(233)], 'Encoding', 'ascii');
catch err
disp(err.message);
endExpected output:
filewrite: character 'é' (U+00E9) cannot be encoded as ASCIIUsing filewrite with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how filewrite changes the result.
Run a small filewrite example, explain the result, then change one input and compare the output.
FAQ
What does filewrite return?⌄
It returns the number of bytes written as a double scalar. Omit the output argument when you do not need this information.
How are string arrays written?⌄
Each element of the string array is written sequentially (column-major order), separated by newline characters. This mirrors MATLAB’s filewrite behaviour and matches what most users expect when exporting string arrays.
Does filewrite add a newline automatically?⌄
No. Provide explicit newline characters (\n) when you want line breaks. Appending mode ('WriteMode','append') does not insert separators automatically.
How can I write binary data?⌄
Provide a numeric array with values in the range 0–255 (for example uint8). Use 'Encoding','raw' (or rely on the default) to bypass text encoding.
What happens if the file cannot be opened?⌄
filewrite throws a descriptive error containing the system message (for example, permissions or directory-not-found issues).
Does the builtin create directories?⌄
No. The parent directory must already exist. Use mkdir before calling filewrite if you need to create folders.
Related Io functions
Repl Fs
addpath · cd · copyfile · delete · dir · exist · fullfile · genpath · getenv · ls · mkdir · movefile · path · pwd · rmdir · rmpath · run · savepath · setenv · tempdir · tempname · uigetfile · uiputfile
Tabular
csvread · csvwrite · detectImportOptions · dlmread · dlmwrite · readmatrix · spreadsheetImportOptions · writecell · writematrix · xlsread
Import
Json
Archive
Http
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how filewrite is executed, line by line, in Rust.
- View the source for filewrite in Rust on GitHub
- Learn how the RunMat runtime works
- Found a bug? Open an issue with a minimal reproduction.
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.