如何在C#中生成随机命名的文本文件?
我必须做一个循环来生成一个随机选取的5个字母字符串,然后在该名称下创建一个文本文件,比如说在C://,我将如何做到这一点?在目录中生成名称和创建文件。我想我必须从ascii码中选取5个随机数,将它们添加到一个数组中,然后将它们转换为字符等价物,以便能够将其用作名称。Idk我将如何将它们转换为字符并用它们组成字符串,您能帮助我吗?查看该类的GetTempFileName和GetRandomFileName方法如何在C#中生成随机命名的文本文件?,c#,ascii,random,text-files,C#,Ascii,Random,Text Files,我必须做一个循环来生成一个随机选取的5个字母字符串,然后在该名称下创建一个文本文件,比如说在C://,我将如何做到这一点?在目录中生成名称和创建文件。我想我必须从ascii码中选取5个随机数,将它们添加到一个数组中,然后将它们转换为字符等价物,以便能够将其用作名称。Idk我将如何将它们转换为字符并用它们组成字符串,您能帮助我吗?查看该类的GetTempFileName和GetRandomFileName方法 创建一个“加密性强”文件名,该文件名与您要求的文件名更接近 在目录中创建一个唯一的文件
- 创建一个“加密性强”文件名,该文件名与您要求的文件名更接近
- 在目录中创建一个唯一的文件名——同时也创建一个具有该名称的零字节文件——有助于确保其唯一性。这可能更接近您实际需要的内容
- 发布了一段生成随机字符串(字母)的代码。创建文件的代码(也使用随机文件名)可用。在Google for you()上找到此代码:
//
///生成具有给定长度的随机字符串
///
///字符串的大小
///如果为true,则生成小写字符串
///随机字符串
私有字符串随机字符串(整数大小,布尔小写)
{
StringBuilder=新的StringBuilder();
随机=新随机();
char ch;
对于(int i=0;i)PATH .GETTimFielnEnter()或Prime.GeTrand OrthFielm()方法。还要考虑文件系统不是事务性的事实,两个并行进程可以创建相同的文件名。TestFielnEnter()应返回唯一的名称(按规范),因此“也许”如果临时目录适合您的解决方案,您不需要关心这个问题。或者您可以使用生成唯一文件名:
维基百科:
而每个生成的GUID都不是
保证是唯一的,总的
唯一密钥数(2^128或
3.4×10^38)是如此之大,以至于同一个数字
生成两次是无穷小的
如果要自己创建文件名,请将要使用的字符放入字符串中,然后从中选择:
// 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)))
//所选字符
字符串chars=“2346789abcdefghjklmnpqrtuvxyzabcdefghjkmnppqrtuvxyz”;
//创建随机生成器
随机rnd=新随机();
字符串名;
做{
//创建名称
name=string.Empty;
while(name.Length<5){
name+=chars.Substring(rnd.Next(chars.Length),1);
}
//添加扩展名
名称+=“.txt”;
//检查文件夹中的文件
}while(File.Exists(Path.Compbine(folderPath,name)))
我已经多次使用此方法。它显然不是要求的“5个字母的字符串”,但在Windows环境中,似乎不需要将自己限制为5个字母。这里的好处是“保证”它是唯一的(即使Wikipedia不同意)。顺便说一句,检查(File.Exists(filename))是多余的,因为文件名将不存在。好吧,你永远不知道-可能需要这5个字母的文件名,以防另一个处理这些文件的工具要求文件名不超过5个字母。这将是另一个工具开发人员的WTF,但要求仍然存在,所以我认为“你可以使用guid——它们的长度不是5个字符,但”就像是说“或者你也可以根本不创建任何文件”——这两种方法都不能解决他的问题:-我肯定会选择Orens的答案,因为你最终可能会得到各种非法的文件路径字符
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();
}
// 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)))