gpt4 book ai didi

go - golang os.Close()函数有效,但是os.Remove()函数无效

转载 作者:行者123 更新时间:2023-12-01 22:02:43 29 4
gpt4 key购买 nike

我正在尝试创建一个文件,打开它,对其进行一些处理并关闭它。最后,我要删除该文件。
除删除外,所有这些操作均已成功执行。
我的代码是:

package main

import (
"fmt"
"os"
"log"
)

func main() {
fmt.Println("Hello")
metaFileName := "./metadata.txt"
_, err2 := os.Create(metaFileName)
if err2 != nil {
log.Fatal(err2)
}

openMetaFile, err := os.Open(metaFileName)
if err != nil {
log.Fatal(err)
}

err = openMetaFile.Close()
if err != nil {
log.Fatal(err)
}

err = os.Remove(metaFileName)
if err != nil {
log.Fatal(err)
}

fmt.Println("Success")
}
输出为:
Hello
2020/08/24 00:00:00 remove ./metadata.txt: The process cannot access the file be
cause it is being used by another process.
我对此一无所知

最佳答案

该问题与第一个打开的文件有关。

package main

import (
"fmt"
"log"
"os"
)

const metaFileName = "./metadata.txt"

func main() {
var (
err error
tmpFile, openMetaFile *os.File
)

fmt.Println("Hello")
if tmpFile, err = os.Create(metaFileName); err != nil {
log.Fatal(err)
}

if err = tmpFile.Close(); err != nil {
log.Fatal(err)
}

if openMetaFile, err = os.Open(metaFileName); err != nil {
log.Fatal(err)
}

if err = openMetaFile.Close(); err != nil {
log.Fatal(err)
}

if err = os.Remove(metaFileName); err != nil {
log.Fatal(err)
}

fmt.Println("Success")
}
如您所见,我使用了var a来关闭您打开的第一个文件。结果如下:
Hello
Success

关于go - golang os.Close()函数有效,但是os.Remove()函数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63559737/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com