有没有什么合理的方法可以判断在windows平台上使用go语言能否成功删除文件?我尝试使用各种标志调用 os.OpenFile 包括使用 os.O_TRUNC 所有调用都成功但删除将在文件使用时失败。我还尝试使用特定于 Windows 的锁定机制(即 kern.NewProc("LockFileEx") 等),这些似乎成功获得排他锁,但 os.Remove(解锁后)将失败。我意识到如果在测试和删除调用之间,如果另一个进程打开文件删除仍然会失败,但这里不是这种情况,我的测试我知道文件正在使用但我找不到测试来告诉我那个(除了实际调用 os.Remove)
在 Windows 上,Go os.Remove函数使用 Windows DeleteFile函数。您必须满足某些条件才能删除 Windows 文件。例如,“DeleteFile 函数将文件标记为在关闭时删除。因此,直到文件的最后一个句柄关闭后,文件删除才会发生”、“如果应用程序尝试删除具有其他内容的文件,DeleteFile 函数将失败”为正常 I/O 打开句柄”,等等。