如何解决我应该在调用os.removeAll之前关闭os.File吗?
因此,如果我已经在temp目录中创建了一个临时文件,使用了它,现在我需要删除它(或它们),应该先调用file.Close()然后调用os.RemoveAll,还是调用os .RemoveAll是否有必要关闭文件?然后释放文件描述符了吗?
解决方法
在linux上,删除文件会导致其名称从文件系统中删除,但是存储块将保留在磁盘上,同时您仍具有打开的文件描述符,并且仅在该文件描述符(以及在该文件)已关闭。参见https://linux.die.net/man/2/unlink
在旅途中,仅由于您在包含文件的目录上调用os.RemoveAll()
,打开的文件描述符将不会关闭。
我认为Microsoft Windows的工作原理有所不同:我认为尝试删除当前正在写入的文件时会出现错误。可能是错误的,我不是Windows专家。但是同样,打开的文件描述符不会自动关闭。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。