Je suis en train d'écrire dans un fichier en Common Lisp, mais je continue à obtenir une erreur « fichier n'est pas un flux »:Clisp Erreur: PRINC: argument n'est pas un flux
[1]> (open "file.txt" :direction :output :if-does-not-exist :create :if-exists :supersede)
#<output buffered file-stream character #P"file.txt">
[2]> (princ 'Hello "file.txt")
*** - princ: argument "file.txt" is not a stream
Même essayer de fermez le fichier renvoie une erreur:
[4]> (close "file.txt")
*** - no-applicable-method: When calling #<standard-generic-function close>
with arguments ("file.txt"), no method is applicable.
le fichier a été créé correctement, donc je pense qu'il pourrait être un problème d'autorisations, mais cela ne semble pas que ce soit. J'ai googlé cette erreur sans aucune chance jusqu'à présent. Est-ce que quelqu'un sait ce que je fais mal? Je vous remercie.
PS: Je suis sous Linux Mint 17,3 Rosa avec CLISP 2,49 (2010-07-07)
Merci beaucoup! J'ai lu à propos de 'with-open-file', mais je ne crois pas que je suis autorisé à l'utiliser pour mon travail. Donc à la place je l'ai fait: '(fichier setq (ouvrir" fichier.txt ": direction: sortie: if-does-not-exists: créer: si-existe: supersede)) (princ 'Bonjour fichier) (fermer fichier) ' Qui a bien fonctionné. – LePoufCelebre
@LePoufCelebre Notez que ce n'est pas vraiment différent de tout autre langage de programmation. En C, par exemple, vous feriez 'int fd = open (" foo.txt ", ...); write (fd, ...); 'not' open ("foo.txt", ...); write ("foo.txt", ...); '. Ou en Java, vous feriez 'FileOutputStream out = new FileOutputStream (" foo.txt "); out.write (...) ', pas' FileOutputStream out = nouveau FIleOutputStream ("foo.txt"); "foo.txt" .write (...); '. –
Merci @JoshuaTaylor, je ne le savais pas. – LePoufCelebre