2024 State of 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

评论由:dmiller 添加

Cees 建议使用附带的代码。

0

评论由:dmiller 添加

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

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