To create an empty file, like the Unix touch command does, you might try something like this:
;; BOGUS (close (open "foo.txt" :direction :output :if-does-not-exist :create :if-exists :append))
open has a :direction option specifically for this purpose, though:
(open "foo.txt" :direction :probe :if-does-not-exist :create)
If “foo.txt” does not exist, it will be created. The stream returned is already closed. The spec says this:
[:probe causes] the creation of a “no-directional” file stream; in effect, the file stream is created and then closed prior to being returned by open.