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