簡體   English   中英

用GUID創建一個唯一的名稱

[英]c# Create a unique name with a GUID

我正在創建一個備份解決方案。 我懷疑我要實現的目標中是否有任何新內容。

復制文件之前,我想備份目標文件,以防萬一損壞。 這意味着重命名文件。

重命名時必須小心,以防文件已經存在並且在末尾添加01是不安全的。

我的問題是,基於在其他地方找不到答案,將向文件名添加GUID的工作。 因此,如果我的文件名為file01.txt,將文件重命名為file01.txtGUID(其中GUID是生成的GUID),則可以執行該文件的備份(在這種情況下有2次備份),然后,確保已復制文件(通過比較文件與源的長度),刪除名稱中帶有GUID的文件。

我知道GUID不能100% 保證是唯一的,但這足夠嗎?

只需獲取一個GUID,然后詢問目標操作系統是否存在name + GUID。 如果是這樣,請選擇一個新的GUID,然后重試。 無論如何,您都將刪除name + GUID文件,所以誰在乎您是否不能在第一次嘗試中選擇唯一的文件名。

考慮到風險和影響,我認為您可能專注於錯誤的問題。

如果沒有足夠的磁盤空間在目標系統上進行兩次備份該怎么辦?

如果文件名+路徑對於目標操作系統而言太長怎么辦?

從您獲得名稱到嘗試對文件執行時間操作之間的時間段內,其他人會修改文件嗎?

編寫防御性代碼是要考慮風險,但是不要因為專注於不太可能或幾乎不可能的場景而發瘋。

您為什么不只使用GetTempFileName()? 這就是它的目的;

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

是的,這足夠了。 通過量子力學,沒有什么是不可能的,從理論上講,在一百萬年之內,您也許可以偶然地重現GUID,但是由於還要添加文件名,因此甚至不可能。 當然,您也可以添加文件大小(以字節為單位)或文件的哈希值,但請記住,在Windows上,路徑的長度不是無限的。

Guid.NewGuid()

如果你的朋友。

它是全球唯一的,在宇宙中是唯一的。 您引用的帖子是個玩笑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM