关于"临时文件和目录"无法删除tempfile
zmc-x opened this issue · 1 comments
zmc-x commented
问题描述:
执行"临时文件和目录"代码时,会存在这样的error:The process cannot access the file because it is being used by another process.
首先代码如网站描述:
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
f, err := os.CreateTemp("", "sample")
check(err)
fmt.Println("Temp file name:", f.Name())
defer os.Remove(f.Name())
_, err = f.Write([]byte{1, 2, 3, 4})
check(err)
}
在这个过程中并不能删掉所创建的临时文件,因为此时*File
未关闭(造成存在一个process 正在访问file),导致os.Remove()
无法访问,进行删除。
故应该修改为:
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
f, err := os.CreateTemp("", "sample")
check(err)
fmt.Println("Temp file name:", f.Name())
defer os.Remove(f.Name())
defer f.Close()
_, err = f.Write([]byte{1, 2, 3, 4})
check(err)
}
945725631 commented
cc