簡體   English   中英

如何在C#中創建隨機圖像名稱?

[英]How do I create a random image name in C#?

當我添加圖片時,我希望它創建一個新的隨機文件名,因為如果你添加一個具有相同名稱的圖片,它將只是覆蓋。

這是一個內置的方法Path.GetRandomFileName 它返回一個隨機文件夾名稱或文件名。

GetRandomFileName方法返回加密強大的隨機字符串,可用作文件夾名稱或文件名。 與GetTempFileName不同,GetRandomFileName不會創建文件。 當文件系統的安全性至關重要時,應該使用此方法而不是GetTempFileName。

如果你想使用擴展名(例如.jpg而不是生成),你可以使用另一個輔助方法Path.ChangeExtension

string extension = ".jpg";
string fileName = Path.ChangeExtension(
    Path.GetRandomFileName(),
    extension
);

System.IO.Path.GetRandomFileName獲取保證唯一的文件名。

由於您想保存圖片,您可以使用GUID作為文件名:

string filename = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".jpg");

當我需要另一個文件擴展名而不是.tmp(當你通過GetTempFileName創建文件時獲取文件擴展名)時,我總是這樣做。
當然你可以通過GetTempFileName創建文件,然后重命名它們,但是你必須再次檢查是否存在具有新名稱的文件...

您可以生成Guid並將其用於您的文件名。 雖然這意味着文件不是人類可讀的,並且沒有關於內容是什么的信息。

您可以使用當前時間構建它。

string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";

上面的示例將使用年,月,日,小時,分鍾,秒和分數秒來格式化當前時間。 (如果你希望它減少到1,則可以用較少的f s指定秒的分數。)。


好處:

  • 它將按字母順序排序列表中的創建時間自動排序。 (與Windows資源管理器中的默認排序一樣。)
  • 它是人類可讀的,並提供有關其創建時間的有用信息。

缺點:

  • 如果這是一個Web應用程序(或其他類型的多線程進程),如果同時生成兩個文件,則有一個(小)機會獲得相同的名稱。 如果這是一個單線程EXE,這不是問題。

使用GUID命名您的圖像

對於C#,您可以使用: System.Guid.NewGuid().ToString()

也許您正在尋找GetTempFileName

我會敬畏 使用原始文件名+ DateTime.Now.ToString("yyyyMMddHHmmssffff");

我也會選擇GUID解決方案。

這里有一些我經常使用的代碼:

public static string GetRandomFileName(string extension)
{
    StringBuffer sb = new StringBuffer(Guid.NewGuid().ToString());
    if (!string.IsNullOrEmpty(extensions))
    {
        sb.Append(".");
        sb.Append(extension);
    }

    return sb.ToString();
}

將為您提供精細,可重復使用的解決方案。 把它放到你的“我最偉大的時刻的集合” - 類庫中,你很高興。

暫無
暫無

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

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