登录
首页 >  Golang >  Go问答

我应该在调用 os.removeAll 之前关闭 os.File 吗?

来源:stackoverflow

时间:2024-04-06 13:36:29 187浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《我应该在调用 os.removeAll 之前关闭 os.File 吗?》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

所以,如果我在临时目录中创建了一个临时文件,使用了它,现在我需要删除它(或它们),我应该先调用 file.Close() 然后调用 os.RemoveAll,或者如果我调用 os .RemoveAll 是不是不需要关闭文件?那么文件描述符是否被释放?


解决方案


在 Linux 上,删除文件会导致其名称从文件系统中删除,但当您仍然有打开的文件描述符时,存储块将保留在磁盘上,并且仅在该文件描述符(以及在该文件)已关闭。查看https://linux.die.net/man/2/unlink

在 go 中,打开的文件描述符不会仅仅因为您在包含该文件的目录上调用 os.RemoveAll() 而被关闭。

我相信 Microsoft Windows 的工作方式有所不同:我认为当您尝试删除当前正在写入的文件时,您会收到错误消息。这可能是错误的,我不是 Windows 专家。但同样,打开的文件描述符不会自动关闭。

今天关于《我应该在调用 os.removeAll 之前关闭 os.File 吗?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>