如何在C#中生成随机命名的文本文件?

如何在C#中生成随机命名的文本文件?,c#,ascii,random,text-files,C#,Ascii,Random,Text Files,我必须做一个循环来生成一个随机选取的5个字母字符串,然后在该名称下创建一个文本文件,比如说在C://,我将如何做到这一点?在目录中生成名称和创建文件。我想我必须从ascii码中选取5个随机数,将它们添加到一个数组中,然后将它们转换为字符等价物,以便能够将其用作名称。Idk我将如何将它们转换为字符并用它们组成字符串,您能帮助我吗?查看该类的GetTempFileName和GetRandomFileName方法 创建一个“加密性强”文件名,该文件名与您要求的文件名更接近 在目录中创建一个唯一的文件

我必须做一个循环来生成一个随机选取的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)))