golang os.Close() 函数有效,但 os.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.

我对此一无所知


墨色风雨
浏览 425回答 1
1回答

森栏

该问题与第一个打开的文件有关。package mainimport (    "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来关闭您打开的第一个文件。结果如下:HelloSuccess
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go