请在2024年Clojure调查!中分享您的看法。

欢迎!请参阅关于页面了解更多关于此平台的信息。

0
ClojureCLR

例如:

(spit "c:/tmp/spit.txt" "012345")
(spit "c:/tmp/spit.txt" "BB")

结果会生成一个包含:BB345 的文件。

由cees van Kemenade通过电子邮件报告。

6 个答案

0

评论者:dmiller

使用字符串参数的spit默认以FileMode.CreateOrNew模式打开FileStream(包装在StreamWriter中)。这无论文件是否存在都会工作。如果默认为Truncate模式,则在文件不存在时将失败。因此,我不想将其设置为默认模式。我也不知道如何比较文件存在与给定文件模式的测试来确定要采取的行动。

如果您知道文件存在并想要截断,请使用该文件模式调用spit。

(spit "filename" "test" :file-mode System.IO.FileMode/Truncate)

0

评论者:dmiller

正确的做法是指定文件模式调用spit

(spit "c:/tmp/spit.txt" "BB" :file-mode System.IO.FileMode/Truncate)

0

评论者:dmiller

应请求者要求,我决定重新考虑此问题。

0
by

评论者:dmiller

Cees建议附加的代码。

0
by

评论者:dmiller

补充:将slurp改为以非锁定模式读取文件。

0
by
参考:[https://clojure.atlassian.net/browse/CLJCLR-37](https://clojure.atlassian.net/browse/CLJCLR-37)(由dmiller报告)
...