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

根据 OP 的请求,我决定重新考虑这个问题。

0投票

评论者:dmiller

Cees建议附带的代码。

0投票

评论者:dmiller

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

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