Difference between revisions of "ChucK/Dev/IO/FileIO"
From CSWiki
Line 19: | Line 19: | ||
===Examples=== | ===Examples=== | ||
+ | # Functions to read and write an array of integers in binary mode. | ||
+ | <code><pre> | ||
+ | fun void writeInts(int integers[], string path) { | ||
+ | |||
+ | // open the file | ||
+ | FileIO file; | ||
+ | if (!file.open(path, FileIO.MODE_WRITEONLY | FileIO.MODE_BINARY)) | ||
+ | return; // error opening the specified file | ||
+ | |||
+ | // write out the size and contents of the array | ||
+ | file =< integers.size(); | ||
+ | for (0 => int i; i < integers.size(); i++) | ||
+ | file =< integers[i]; | ||
+ | |||
+ | // and we're done | ||
+ | file.close(); // automatically calls file.finish() | ||
+ | |||
+ | } | ||
+ | |||
+ | fun int[] readInts(string path) { | ||
+ | |||
+ | // open the file | ||
+ | FileIO file; | ||
+ | if (!file.open(path, FileIO.MODE_READONLY | FileIO.MODE_BINARY)) { | ||
+ | int ret[0]; // error opening the specified file | ||
+ | return ret; | ||
+ | } | ||
+ | |||
+ | // read the size of the array | ||
+ | file => int size; | ||
+ | file.finish(); // wait for the read to finish without advancing time | ||
+ | // before continuing | ||
+ | |||
+ | // now read in the contents | ||
+ | int ret[size]; | ||
+ | for (0 => int i; i < size; i++) | ||
+ | file => ret[i]; | ||
+ | |||
+ | // and we're done | ||
+ | file.close(); // automatically calls file.finish() | ||
+ | return ret; | ||
+ | |||
+ | } | ||
+ | </pre></code> |
Revision as of 21:10, 6 March 2008
The following is subject to change.
FileIO Class
The FileIO class is a subclass of the IO class. Only elements of the FileIO class that extend or override the parent class are listed here. Only files of up to 2 GiB in size are supported by this class.
Methods
-
fun int open(string path[, int flags])
- Opens the specified file, returning true on success and false otherwise. The flags can optionally be used to specify the mode in which to open the file (
FileIO.MODE_READ_WRITE | FileIO.MODE_ASCII
by default). -
fun void seek(int pos)
- Seeks to the specified byte offset from the start of the file.
-
fun int size()
- Returns the size of the file in bytes, or -1 if a file is not open.
Directories
-
fun int isDir()
- Returns true if the opened file is a directory, false otherwise.
-
fun string[] dirList()
- Returns an array containing the names of each file in the opened directory, or an empty array if the opened file is not a directory.
Constants
-
FileIO.stdin
FileIO.stdout
- Pre-created files for reading from and writing to stdin and stdout.
-
FileIO.MODE_READ_WRITE
FileIO.MODE_READONLY
FileIO.MODE_WRITEONLY
FileIO.MODE_APPEND
- These flags can optionally be passed to the
open
function to specify the mode in which to open the file. -
FileIO.MODE_ASCII
FileIO.MODE_BINARY
- These flags can optionally be passed to the
open
function to specify whether reading and writing should proceed in ASCII (readable text) or binary mode.
Examples
- Functions to read and write an array of integers in binary mode.
fun void writeInts(int integers[], string path) {
// open the file
FileIO file;
if (!file.open(path, FileIO.MODE_WRITEONLY | FileIO.MODE_BINARY))
return; // error opening the specified file
// write out the size and contents of the array
file =< integers.size();
for (0 => int i; i < integers.size(); i++)
file =< integers[i];
// and we're done
file.close(); // automatically calls file.finish()
}
fun int[] readInts(string path) {
// open the file
FileIO file;
if (!file.open(path, FileIO.MODE_READONLY | FileIO.MODE_BINARY)) {
int ret[0]; // error opening the specified file
return ret;
}
// read the size of the array
file => int size;
file.finish(); // wait for the read to finish without advancing time
// before continuing
// now read in the contents
int ret[size];
for (0 => int i; i < size; i++)
file => ret[i];
// and we're done
file.close(); // automatically calls file.finish()
return ret;
}