我必须做一个循环来生成一个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