open filespec &key direction element-type external-format if-exists if-does-not-exist => stream
A file designator.
If
direction
is
:probe
,
external-format
is ignored. The element type and external format of the returned stream are undefined.
By default, the value of
lw:*default-character-element-type*
(the ANSI standard default is
character
).
An external file format designator. By default, this is
:default
.
What to do if the file stream already exists. The possible values for this are as in the ANSI standard.
What to do if the file stream does not already exist. The possible values for this are as in the ANSI standard.
If
external-format
has a name which is not
:default
and the parameters include
:eol-style
, it is used as is.
Otherwise, the system decides which external format to use via
guess-external-format
. By default, this finds a match based on the filename; or (if that fails), looks in the EMACS-style (
-*-
) attribute line for an option called
encoding
or
external-format
; or (if that fails), chooses from among likely encodings by analyzing the bytes near the start of the file. By default, it then also analyses the start of the file for byte patterns indicating the end-of-line style, and uses a default end-of-line style if no such pattern is found. This behavior is configurable.
After the external-format has been determined, it is verified using
valid-external-format-p
; an error is signalled if this check fails.
If
open
gets
:default
as its
element-type
arg, it chooses the type on the basis of the external format. If
open
gets an
element-type
other than
:default
and the direction is
:input
or
:io
, the argument must be a supertype of the type of characters produced by the external format; if the direction is
:output
or
:io
, it must be a subtype of the type of characters accepted by the external format; if it does not satisfy these requirements, an error is signalled.
Standard stream input and output functions for character and binary data all work in the obvious way on a
file-stream
with
element-type
base-char
,
(unsigned-byte 8)
or
(signed-byte 8)
. For example,
read-sequence
can be called with a string buffer and a binary
file-stream
: the character data is constructed from the input as if by
code-char
. Similarly
write-sequence
can be called with a string buffer and a binary
file-stream
: the output is converted from the character data as if by
char-code
. All standard stream I/O functions have this flexibility. Also, 8-bit binary data can be read from and written to a
base-char
file-stream
.