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

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

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

Go
慕田峪4524236 2022-06-27 10:20:44
所以如果我在临时目录中创建了一个临时文件,使用它,现在我需要删除它(或它们),我应该调用第一个 file.Close() 然后调用 os.RemoveAll,或者如果我调用 os.RemoveAll 它没有必要关闭文件吗?那么文件描述符是否被释放?
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

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

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

我相信 microsoft windows 的工作方式不同:我认为当您尝试删除当前正在写入的文件时会出现错误。那可能是错误的,我不是Windows专家。但同样,打开的文件描述符不会自动关闭。


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号