写入不存在的文件不会在 Go 中产生错误。
例如,这是一个循环写入文件的示例程序:
package main
import (
"log"
"os"
"time"
)
func main() {
f, err := os.OpenFile("mytest.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
for {
n, err := f.WriteString("blah\n")
if err != nil {
log.Fatal(err)
}
log.Printf("wrote %d bytes\n", n)
time.Sleep(2 * time.Second)
}
}
当它运行时,我rm mytest.log从命令行发出并观察到程序在下一次调用时没有产生错误WriteString()。(我在 Linux 上测试过,其他操作系统可能会有所不同)
有没有办法检测文件是否被删除(除了在每次写入之前对文件进行统计)?并且大概写入的字节只是被操作系统丢弃了?
收到一只叮咚
相关分类