ChucK/Dev/IO/FileIO
From CSWiki
The following is subject to change.
Contents |
[edit]
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.
[edit]
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_ASCIIby default). -
fun void seek(int pos) - Seeks to the specified byte offset from the start of the file.
-
fun int tell() - Returns the current position in the file in bytes, or -1 if a file is not open.
-
fun int size() - Returns the size of the file in bytes, or -1 if a file is not open.
[edit]
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.
[edit]
Constants
-
FileIO.FLAG_READ_WRITEFileIO.FLAG_READONLYFileIO.FLAG_WRITEONLYFileIO.FLAG_APPEND - These flags can optionally be passed to the
openfunction to specify the mode in which to open the file. -
FileIO.TYPE_ASCIIFileIO.TYPE_BINARY - These flags can optionally be passed to the
openfunction to specify whether reading and writing should proceed in ASCII (readable text) or binary mode.
[edit]
Examples
1. 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;
}
2. Function to append a string to the end of a log file (uses seek and size).
fun void logAppend(FileIO log, string entry) {
// file already given to us...make sure it is open
if (log.isClosed())
return;
log.size() => log.seek; // move to end of file
log <~ entry <~ "\n"; // write the entry, terminate with newline
// don't close the file or wait for the queued I/O to
// finish--that's up to the calling function
}
3. TODO: Using directories
