title: How to open a file in Lisp and specify both ':if-exists :append' and also ':if-does-not-exist :create'
body: <p>I am trying to make some Lisp code which gracefully handles files that both do exist or don't exist. </p>
  
  <p>So sometimes I start with a file that already exists and has text like "This is original text not lisp text"</p>
  
  <pre><code>(defparameter s (open "s.txt"
                            :direction :io
                            :if-does-not-exist :create
                            :if-exists :append))
  =&gt;s
  (print "first line" s)
  =&gt;"first line"
  (print "second Line" s)
  =&gt;"second line"
  (read s)
  =&gt;ERRORs End of file reached. "; Evaluation aborted on #&lt;END-OF-FILE {10045973C3}&gt;."
  Over to a cmd window:
  $cat s.txt 
  This is original text not lisp text. 
  </code></pre>
  
  <p>That is the full interaction. Further more however the text already in s.txt is completely unchanged. </p>
  
  <p>This however simply fails to actually append or overwrite text to the file at all.</p>