golang os.Close()函数有效,但操作系统.Remove()函数没有



我正在尝试创建一个文件,打开它,对它进行一些处理&关闭它。最后,我想删除该文件。除删除操作外,所有这些操作都已成功执行。

我的代码是:

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")
}

正如您所看到的,我使用了vara来关闭您打开的第一个文件。结果如下:

Hello
Success

相关内容

最新更新