primefaces文件重命名(与覆盖)可能在Windows上?
在POSIX系统上,重命名(2)提供了一个primefaces重命名操作,包括覆盖目标文件,如果它存在并且权限允许的话。
有什么办法可以在Windows上获得相同的语义? 我知道Vista和Server 2008上的MoveFileTransacted(),但我需要这个来支持Win2k。
这里的关键词是primefaces的 …解决scheme不能以任何方式使操作失败,使操作处于不一致的状态。
我见过很多人说win32上不可能,但我问你,是不是?
请尽可能提供可靠的引文。
Win32不保证primefaces文件元数据操作。 我会提供一个引用,但是没有 – 这个事实没有书面的或有文件记载的保证意味着多less。
你将不得不编写自己的例程来支持这个。 这是不幸的,但你不能指望win32提供这种服务水平 – 它根本不是为它devise的。
-亚当
请参阅Win32中的ReplaceFile()
( pubs/64525/tr-2006-45.html )
在Windows Vista和Windows Server 2008中添加了primefaces移动function – MoveFileTransacted()
不幸的是,这对老版本的Windows没有帮助。
[编辑]有趣的文章在这里MSDN: http : //blogs.msdn.com/adioltean/archive/2005/12/28/507866.aspx
你仍然可以在Windows上进行rename()调用,但是我想如果你不知道你正在使用的文件系统,就不能保证你想要的 – 如果你使用的是FAT文件系统,就不能保证。
但是,您可以使用MoveFileEx并使用MOVEFILE_REPLACE_EXISTING和MOVEFILE_WRITE_THROUGH选项。 后者在MSDN中有这样的描述:
设置此值可确保在函数返回之前将作为复制和删除操作执行的移动刷新到磁盘。 冲洗发生在复制操作结束时。
我知道这与重命名操作不一定相同,但是我认为这可能是您得到的最好保证 – 如果这样做对于文件移动,它应该更简单的重命名。
相当数量的答案,但不是我期待的那个…我有理解(也许是不正确的),MoveFile 可以是primefaces提供的,正确的恒星alignment,标志被使用,文件系统是源目标相同目标。 否则,操作将回退到[复制 – >删除]文件。
鉴于; 我也有一个谅解,MoveFile – 当它是primefaces – 只是设置文件信息,这也可以在这里完成: setfileinfobyhandle 。
这不包括更换的情况
“MS研究论文的相关文章:”在….下“
这是暗示操作是primefaces性的,但这是误导性的,只适合造成混淆。 所需要的是旧文件的primefaces删除,并在一个不可分割的步骤中重命名新文件。 这些可能是两个元数据操作本身是primefaces的,但化合物不是primefaces的。