1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
<html><head><title>XLISP open</title>
<link rel="stylesheet" type="text/css" href="reference.css">
</head>
<body>
<a href="../start.htm">Nyquist / XLISP 2.0</a> -
<a href="../manual/contents.htm">Contents</a> |
<a href="../tutorials/tutorials.htm">Tutorials</a> |
<a href="../examples/examples.htm">Examples</a> |
<a href="reference-index.htm">Reference</a>
<hr>
<h1>open</h1>
<hr>
<p><table cellpadding="0" cellspacing="0" style="margin-left:10px"><tbody>
<tr valign="top">
<td><nobr>Type:</nobr></td>
<td><nobr> - </nobr></td>
<td width="100%"><nobr>function (subr)</nobr></td>
</tr>
<tr valign="top">
<td><nobr>Source:</nobr></td>
<td><nobr> - </nobr></td>
<td width="100%"><nobr>xlfio.c</nobr></td>
</tr>
</tbody></table></p>
<h2>Syntax</h2>
<dl>
<dt>(open <i>file</i> [:direction <i>in-out</i>])</dt>
<dd><i>file</i> - a string expression or symbol<br>
<i>in-out</i> - an optional keyword symbol that must be either ':input' or
':output'. The default is ':input'.<br>
returns - a stream</dd>
</dl>
<h2>Description</h2>
<p>The 'open' function opens the 'file' for input or output. The 'file' may
be a string expression or a symbol. Following the 'file', there is an
optional keyword, ':direction'. The argument following this is either
':input' or ':output' which specifies the direction of the file. If no
':direction' is specified, the default is ':input'. When 'file' is a string,
you may specify a complete file location or extensions like
"/usr/local/bin/myfile.lsp" or "A:\LISP\TIM.BAT". If
the file open was successful, then a file pointer of the following form is
returned as the result:</p>
<pre class="example">
#<File: #99999>
</pre>
<p>If the file open was not successful, a
<a href="nil.htm">NIL</a> is returned. For an input file, the
file has to exist, or an error will be signaled.</p>
<h2>Examples</h2>
<pre class="example">
(setq f (open 'mine :direction :output)) <font color="#008844">; create file named MINE</font>
(print "hi" f) <font color="#008844">; returns "hi"</font>
(close f) <font color="#008844">; file contains "hi" <newline></font>
(setq f (open 'mine :direction :input)) <font color="#008844">; open MYFILE for input</font>
(read f) <font color="#008844">; returns "hi"</font>
(close f) <font color="#008844">; close it</font>
</pre>
<p><b>File names:</b> In the PC and DOS world, all file names and extensions
["foo.bat"] are automatically made uppercase. In using XLISP, this
means you don't have to worry about whether the name is "foo.bat",
"FOO.BAT" or even "FoO.bAt", they will all work.
However, in other file systems [UNIX in particular], uppercase and lowercase
do make a difference:</p>
<p>This will create a file named FOO-FILE in UNIX, because XLISP uppercases
its symbols:</p>
<pre class="example">
(open 'foo-file :direction :output)
</pre>
<p>This will create a file named 'foo-file' because UNIX doesn't
uppercase its file names:</p>
<pre class="example">
(open "foo-file" :direction :output)
</pre>
<p>So, if you are having trouble with opening and accessing files, check to
make sure the file name is in the proper case.</p>
<p><b>Common Lisp:</b> Common Lisp supports bidirectional files. So, porting
Common Lisp code may be difficult to port if it uses these other file
types.</p>
<p>See the
<a href="../manual/xlisp-man-029.htm#open">open</a>
function in the <nobr>XLISP 2.0</nobr> manual.</p>
<p><nobr> <a href="#top">Back to Top</nobr></a></p>
<hr>
<a href="../start.htm">Nyquist / XLISP 2.0</a> -
<a href="../manual/contents.htm">Contents</a> |
<a href="../tutorials/tutorials.htm">Tutorials</a> |
<a href="../examples/examples.htm">Examples</a> |
<a href="reference-index.htm">Reference</a>
</body></html>
|