交易切换两个文件?

时间:2012-08-24 19:26:57

标签: c# .net file io

我有a.tmp和b.tmp。我喜欢将a重命名为b和b,但是a.tmp必须始终存在。是否有可能以事务方式重命名?

我在Windows上使用C#。但是我可以使用cmd / shellexecute来使用内置于windows中的其他东西

3 个答案:

答案 0 :(得分:2)

使用File.OpenWrite并将b.tmp的内容写入a.tmp。它将覆盖a.tmp的内容,而不会将其从文件夹中删除。

参考:http://msdn.microsoft.com/en-us/library/system.io.file.openwrite.aspx

答案 1 :(得分:1)

如果您使用Vista或更高版本并使用NTFS,您还可以查看像Transactional NTFS这样的TxF包装器。它使用基于内核事务管理器的NTFS事务,并且假定integratesTransactionScope很好,因此如果需要,您也可以将它与数据库一起使用,而不仅仅是一台计算机。

是的,这对你的用例来说可能是完全矫枉过正的,但我只想在这里删除这些信息,因为你明确询问了事务性文件系统操作。

答案 2 :(得分:0)

将a.tmp的内容复制到c.tmp,通过cmd /c move /y thisfile thatfile使用控制台move / Y,然后将c.tmp重命名为b.tmp