c#使用GUID创建唯一名称

时间:2012-10-13 15:34:17

标签: c# guid file-rename

我正在创建一个备份解决方案。我怀疑在我想要实现的目标方面有什么新的东西。

在复制文件之前,我想备份目标文件,以防万一有任何损坏。这意味着重命名文件。

重新命名时我必须小心,以防文件已经存在,并且在末尾添加01是不安全的。

我的问题是,基于没有找到答案的地方,将在文件名工作中添加GUID。因此,如果我的文件名为file01.txt,则将文件重命名为file01.txtGUID(其中GUID是生成的GUID),然后我可以执行该文件的备份(在此实例中有2个备份)然后,确保文件已复制(通过比较文件的长度与源),删除名称中带有GUID的文件。

我知道GUID不是100%guaranteed to be unique,但这样就足够了吗?

4 个答案:

答案 0 :(得分:3)

只需获取GUID,然后询问目标操作系统是否存在名称+ GUID。如果是,则选择一个新的GUID并再试一次。你打算删除名称+ GUID文件,所以谁在乎你是否在第一次尝试时不能选择一个唯一的文件名。

考虑到风险和影响,我认为你可能会关注错误的问题。

如果您没有磁盘空间在目标系统上进行两次备份,该怎么办?

如果文件名+路径太长而目标操作系统无法处理,该怎么办?

在获得名称并尝试对文件执行时间操作之间的某段时间内,其他人是修改文件的?

编写防御性代码是为了考虑风险,但不要因为你专注于不太可能或几乎不可能的情况而让自己发疯。

答案 1 :(得分:2)

为什么不直接使用GetTempFileName()?这就是它的用途;

http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx

答案 2 :(得分:1)

是的,这就足够了。通过量子力学没有什么是不可能的,理论上在一百万年里你可以通过偶然机会重现GUID,但是当你还要添加文件名时,所以它更加不可能。你当然也可以用byte或文件的哈希来添加文件大小,但是请记住,在Windows上,路径的长度不是无限的。

Guid.NewGuid()

如果你的朋友。

答案 3 :(得分:-1)

它是全球独一无二的,在宇宙中是独一无二的。你引用的帖子是一个笑话。