我必須做一個循環來生成一個5隨機選取的字符串,然後在該名稱下創建一個文本文件,可以說在C://中,我該怎麼做?生成名稱和在目錄中創建文件。我想我必須從ascii代碼中選擇5個隨機數字,然後將它們轉換爲相應的字符,以便能夠將它用作名稱。 Idk我會如何將他們轉換成角色並與他們組成一串,你能幫我嗎?如何在C#中生成隨機命名的文本文件?
回答
如果你要創建的文件名youself,把你想要在一個字符串使用,並從挑選角色:
// selected characters
string chars = "2346789ABCDEFGHJKLMNPQRTUVWXYZabcdefghjkmnpqrtuvwxyz";
// create random generator
Random rnd = new Random();
string name;
do {
// create name
name = string.Empty;
while (name.Length < 5) {
name += chars.Substring(rnd.Next(chars.Length), 1);
}
// add extension
name += ".txt";
// check against files in the folder
} while (File.Exists(Path.Compbine(folderPath, name)))
爲什麼downvote?如果你不解釋你認爲什麼是錯的,它不能改善答案。 – Guffa 2015-04-12 09:14:13
查看System.IO.Path類的GetTempFileName和GetRandomFileName方法。
GetRandomFileName創造了一個「保密性強」的文件名,並且是一個更接近你問什麼。
GetTempFileName在目錄中創建一個唯一的文件名 - 也創建一個名稱爲零的零字節文件 - 有助於確保其唯一性。這可能更接近你實際需要的東西。
+1正是我剛纔要回答的:-) – galaktor 2009-08-13 07:58:17
發現這在谷歌你(source here):
/// <summary>
/// Generates a random string with the given length
/// </summary>
/// <param name="size">Size of the string</param>
/// <param name="lowerCase">If true, generate lowercase string</param>
/// <returns>Random string</returns>
private string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch ;
for(int i=0; i<size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ;
builder.Append(ch);
}
if(lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
之後,使用文件流來創建並寫入文件。
Path.GetTempFileName()或Path.GetRandomFileName()方法呢?還要考慮到文件系統不是事務性的,兩個並行進程可以創建相同的文件名。 TempFileName()應該返回唯一的名稱(按規範),所以'可能'你不需要關心,如果臨時目錄可以適用於你的解決方案。
或者你可以使用一個GUID生成一個唯一的文件名:
百科:雖然每個生成的GUID
不 保證唯一性,總 一些獨特的鍵(2^128或 3.4×10^38)是如此之大,以致相同數字 產生兩次的概率無限小。
string text = "Sample...";
string path = "D:\\Temp\\";
if (!path.EndsWith("\\"))
path += "\\";
string filename = path + Guid.NewGuid().ToString() + ".txt";
while (File.Exists(filename))
filename = path + Guid.NewGuid().ToString() + ".txt";
TextWriter writer = null;
try
{
writer = new StreamWriter(filename);
writer.WriteLine(text);
writer.Close();
}
catch (Exception e)
{
MessageBox.Show("Exception occured: " + e.ToString());
}
finally
{
if (writer != null)
writer.Close();
}
我已經多次使用這種方法。這顯然不是所要求的'5字母字符串',但在Windows環境中,似乎沒有必要將自己限制爲5個字母。這裏的好處是,它是'保證'是獨一無二的(即使維基百科不同意)。 BTW檢查(File.Exists(文件名))是多餘的,因爲文件名不存在。 – 2009-08-13 08:17:21
那麼,你永遠不知道 - 如果處理這些文件的另一個工具要求文件名不超過5個字母,那麼可能需要這些5個字母的文件名。這將是另一個工具開發者方面的WTF,但是這個要求仍然存在,所以我認爲「你可以使用GUID--它們不是5個字符的長度,但仍然」就像在說「或者你可能會以及根本不創建任何文件「 - 都不能解決他的問題:-D – 2009-08-13 09:36:11
- 1. 在C++中生成隨機文件名
- 2. 在C#中以特定速度生成隨機文本文件
- 3. 如何生成隨機的html文件
- 4. 隨機文本生成器
- 5. 如何在生成文件的範圍內生成隨機數?
- 6. 從文本文件生成隨機問題 - C#
- 7. 將隨機生成的數字放入文本文件中
- 8. 如何在NLTK 3.0中生成隨機文本?
- 9. Android:通過按鈕隨機命名文本文件到Textview中
- 10. 在ffmpeg輸出中生成隨機文件名
- 11. 在php中爲文件名生成隨機字符串
- 12. 如何使用C#代碼生成隨機大圖像文件?
- 13. 如何用Jinja2中的變量生成隨機文本?
- 14. 如何在XML文件中生成一個隨機數字?
- 15. 如何使用宏在C++中生成隨機變量名?
- 16. 生成多個文本文件的隨機數
- 17. 隨機文本生成器 - iOS
- 18. PHP從文本生成隨機短語
- 19. 如何爲批處理文件中的文件夾中的每個文件隨機生成名稱?
- 20. 如何從文本文件中選擇一個隨機名稱?
- 21. Java:爲機器人screencapture生成隨機文件名
- 22. 生成隨機XML文檔
- 23. 使用MD5或隨機文件命名?
- 24. 隨機文件名
- 25. 如何生成大的隨機數C
- 26. 生成隨機文件路徑Java
- 27. 隨機文件生成器(再次!)
- 28. 隨機文件生成器代碼?
- 29. iMacro爲twitter生成隨機文本或隨機數
- 30. 生成隨機文本框顯示隨機數
,我肯定會用Orens答案去,因爲你最終可能會遇到各種非法的文件路徑字符 – ThePower 2009-08-13 09:57:38