More file IO!
Can now create, delete, and write to files.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
^title FileFlags Class
|
||||
|
||||
Contains constants for the various file flags used to open or create a file.
|
||||
These correspond directly to the flags that can be passed to the POSIX
|
||||
[`open()`][open] syscall.
|
||||
|
||||
[open]: http://linux.die.net/man/2/open
|
||||
|
||||
They are integers and can be bitwise or'ed together to produce a composite
|
||||
flag.
|
||||
|
||||
## Static Methods
|
||||
|
||||
### FileFlags.**readOnly**
|
||||
|
||||
The file can be read from but not written. Equivalent to `O_RDONLY`.
|
||||
|
||||
### FileFlags.**writeOnly**
|
||||
|
||||
The file can be written but not read from. Equivalent to `O_WRONLY`.
|
||||
|
||||
### FileFlags.**readWrite**
|
||||
|
||||
The file can be both read from and written to. Equivalent to `O_RDWR`.
|
||||
|
||||
### FileFlags.**sync**
|
||||
|
||||
Writes will block until the data has been physically written to the underling
|
||||
hardware. This does *not* affect whether or the file API is synchronous. File
|
||||
operations are always asynchronous in Wren and may allow other scheduled fibers
|
||||
to run.
|
||||
|
||||
This is a lower-level flag that ensures that when a write completes, it has
|
||||
been flushed all the way to disc.
|
||||
|
||||
### FileFlags.**create**
|
||||
|
||||
Creates a new file if a file at the given path does not already exist.
|
||||
|
||||
### FileFlags.**truncate**
|
||||
|
||||
If the file already exists and can be written to, its previous contents are
|
||||
discarded.
|
||||
|
||||
### FileFlags.**exclusive**
|
||||
|
||||
Ensures that a new file must be created. If a file already exists at the given
|
||||
path, this flag will cause the operation to fail.
|
||||
@@ -10,10 +10,25 @@ a file descriptor.
|
||||
|
||||
## Static Methods
|
||||
|
||||
### File.**create**(path, fn)
|
||||
|
||||
Opens the file at `path` for writing and passes it to `fn`. If there is already
|
||||
a file at that path, it is truncated. After the function returns, the file is
|
||||
automatically closed.
|
||||
|
||||
:::wren
|
||||
File.create("numbers.txt") {|file|
|
||||
file.writeBytes("one two three")
|
||||
}
|
||||
|
||||
### File.**delete**(path)
|
||||
|
||||
Deletes the file at `path`.
|
||||
|
||||
### File.**open**(path, fn)
|
||||
|
||||
Opens the file at `path` and passes it to `fn`. After the function returns, the
|
||||
file is automatically closed.
|
||||
Opens the file at `path` for reading and passes it to `fn`. After the function
|
||||
returns, the file is automatically closed.
|
||||
|
||||
:::wren
|
||||
File.open("words.txt") {|file|
|
||||
@@ -37,9 +52,20 @@ Returns the size in bytes of the contents of the file at `path`.
|
||||
|
||||
## Constructors
|
||||
|
||||
### File.**create**(path)
|
||||
|
||||
Opens the file at `path` for writing. If there is already a file at that path,
|
||||
it is truncated.
|
||||
|
||||
:::wren
|
||||
var file = File.create("colors.txt")
|
||||
file.writeBytes("chartreuse lime teal")
|
||||
file.close()
|
||||
|
||||
### File.**open**(path)
|
||||
|
||||
Opens the file at `path` for reading.
|
||||
Opens the file at `path` for reading. You are responsible for closing it when
|
||||
done with it.
|
||||
|
||||
## Methods
|
||||
|
||||
@@ -79,3 +105,13 @@ the file.
|
||||
File.open("example.txt") {|file|
|
||||
System.print(file.readBytes(6, 2)) //> am a f
|
||||
}
|
||||
|
||||
### **writeBytes**(bytes)
|
||||
|
||||
Writes the raw bytes of the string `bytes` to the end of the file.
|
||||
|
||||
### **writeBytes**(bytes, offset)
|
||||
|
||||
Writes the raw bytes of the string `bytes` to the to the file, starting at
|
||||
`offset`. Any overlapping bytes already in the file at the offset are
|
||||
overwritten.
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
<ul>
|
||||
<li><a href="directory.html">Directory</a></li>
|
||||
<li><a href="file.html">File</a></li>
|
||||
<li><a href="file-flags.html">FileFlags</a></li>
|
||||
<li><a href="stat.html">Stat</a></li>
|
||||
<li><a href="stdin.html">Stdin</a></li>
|
||||
</ul>
|
||||
@@ -48,6 +49,7 @@
|
||||
<ul>
|
||||
<li><a href="directory.html">Directory</a></li>
|
||||
<li><a href="file.html">File</a></li>
|
||||
<li><a href="file-flags.html">FileFlags</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
Reference in New Issue
Block a user