为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
墨色风雨 2022-06-27 11:01:08
我正在尝试创建一个文件,打开它,对其进行一些处理并关闭它。最后,我想删除该文件。所有这些操作都成功执行,除了删除。我的代码是:package mainimport (    "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")}输出是:Hello2020/08/24 00:00:00 remove ./metadata.txt: The process cannot access the file because it is being used by another process.我对此一无所知
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

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


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


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信