gpt4 book ai didi

go - 是否需要关闭文件?

转载 作者:IT王子 更新时间:2023-10-29 02:26:08 27 4
gpt4 key购买 nike

使用 golang gin,我使用以下方法读取文件数据:

file, fileHeader, err:=ctx.Request.FormFile("blabla...")

我需要写这个吗?

defer file.Close()

我跳转到源代码,它说:

// Open opens and returns the FileHeader's associated File.
func (fh *FileHeader) Open() (File, error) {
if b := fh.content; b != nil {
r := io.NewSectionReader(bytes.NewReader(b), 0, int64(len(b)))
fmt.Printf("TODDLINE:152\n")
fmt.Printf("TODDLINE:154:fmpfile:%#v\n", fh.tmpfile)
fmt.Printf("TODDLINE:154:Filename:%#v\n", fh.Filename)
return sectionReadCloser{r}, nil
}
fmt.Printf("TODDLINE:155\n")
return os.Open(fh.tmpfile)
}

如果它使用 os.Open,我想我必须关闭文件,但如果它重新调整 sectionReadCloser{r},则关闭函数显示如下:

func (rc sectionReadCloser) Close() error {
return nil
}

sectiontReadCloser 的关闭函数不执行任何操作。我发现它确实返回了 sectionReadCloser{r}。我想我应该关闭文件,但我仍然想知道它什么时候会返回 os.Open。我将继续阅读源代码并尝试理解它。如果有人能给我一些建议,那就太好了。

最佳答案

如果返回的 file 实现了 io.Closer(即,如果它有一个 Close 方法),假设您负责关闭它除非文档另有明确说明。

关于go - 是否需要关闭文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55103925/

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