【问题标题】:How to pad 0 while copying files in c#?在c#中复制文件时如何填充0?
【发布时间】:2012-05-31 03:35:22
【问题描述】:
static void Main(string[] args)
{
    int a=0000001;
    for (int i=0; i <= 5; i++)
    {

        File.Copy(@"C:\SR\30758668.pdf", @"C:\SR\"+a+"_30758668.pdf",true);
        a++;
    }

    Console.WriteLine("\nSuccessful");
    Console.ReadLine();

}

我已经编写了上面的程序,用前导字符串复制 1 个文件 5 次。 像这个文件30758668.pdf应该被创建为0000001_30758668.pdf,0000002_30758668.pdf`,0000003_30758668.pdf`一样明智。

现在它使用1_30758668.pdf2_30758668.pdf 创建文件我不想要这种方式。

我不知道在哪里转换为整数或字符串?

【问题讨论】:

    标签: c# .net file io


    【解决方案1】:

    int 没有格式化; 01 与 1 相同 与 00000001 相同 - 它们都只是 1。

    用途:

     .... + a.ToString().PadLeft(7,'0') + ...
    

    【讨论】:

      【解决方案2】:

      使用字符串格式。即:

      File.Copy(@"C:\SR\30758668.pdf", "C:\SR\" + a.Tostring("000000") + "_30758668.pdf", true);
      

      或者使用 String.Format 更好地构建字符串:

      File.Copy(@"C:\SR\30758668.pdf", String.Format(@"C:\SR\{0}_30758668.pdf", a.ToString("000000")), true);
      

      【讨论】:

      • 还可以将格式说明符放入字符串中:{0:00000000}
      • 或者使用 {0:D7} 来达到类似的效果。
      【解决方案3】:

      您不能在数值数据类型上指定前导零。 您需要将其转换为 String 并使用 PadLeft 用您想要的字符填充它。 PadLeft 的第一个参数表示你想要的字符串的总宽度,第二个参数表示将使用哪个字符进行填充。

      int a=1; 
      
      for (int i=0; i <= 5; i++) 
       { 
      
                  File.Copy(@"C:\SR\30758668.pdf", @"C:\SR\"+ a.ToString().PadLeft(7, "0")+ "_30758668.pdf",true); 
      
              } 
      
              Console.WriteLine("\nSuccessful"); 
              Console.ReadLine(); 
      
          }
      

      【讨论】:

        【解决方案4】:

        另一种显式填充的方法是在 ToString()string.Format() 上使用 Dx 格式说明符:

        例如:

        File.Copy(@"C:\SR\30758668.pdf", @"C:\SR\" + a.ToString("D7") + "_30758668.pdf",true);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-11-19
          • 1970-01-01
          • 2021-11-13
          • 1970-01-01
          • 2015-09-13
          • 1970-01-01
          • 2015-04-25
          相关资源
          最近更新 更多