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](https://clojure.atlassian.net/browse/CLJCLR-37) (由dmiller报告)
...