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

富国沪深
TA贡献1790条经验 获得超9个赞
在 linux 上,删除文件会导致其名称从文件系统中删除,但是当您仍然有一个打开的文件描述符时,存储块将保留在磁盘上,并且仅在该文件描述符(以及在该文件上打开的任何其他文件描述符)时删除已经关了。见https://linux.die.net/man/2/unlink
在 go 中,打开的文件描述符不会因为您调用os.RemoveAll()
包含该文件的目录而关闭。
我相信 microsoft windows 的工作方式不同:我认为当您尝试删除当前正在写入的文件时会出现错误。那可能是错误的,我不是Windows专家。但同样,打开的文件描述符不会自动关闭。
- 1 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消