在 linux 上,删除文件会导致其名称从文件系统中删除,但是当您仍然有一个打开的文件描述符时,存储块将保留在磁盘上,并且仅在该文件描述符(以及在该文件上打开的任何其他文件描述符)时删除已经关了。见https://linux.die.net/man/2/unlink在 go 中,打开的文件描述符不会因为您调用os.RemoveAll()包含该文件的目录而关闭。我相信 microsoft windows 的工作方式不同:我认为当您尝试删除当前正在写入的文件时会出现错误。那可能是错误的,我不是Windows专家。但同样,打开的文件描述符不会自动关闭。