如何在c#中复制文件时填0?

时间:2012-05-24 14:23:00

标签: c# .net file io

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.pdf0000002_30758668.pdf`, 0000003_30758668.pdf`一样明智地创建。

现在使用1_30758668.pdf2_30758668.pdf创建文件我不希望这样。

我没有得到转换为整数或字符串的位置?

4 个答案:

答案 0 :(得分:7)

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

使用:

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

答案 1 :(得分:1)

使用String.Format。即:

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);

答案 2 :(得分:0)

显式填充的替代方法是在ToString()string.Format()中使用Dx格式说明符:

例如:

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

答案 3 :(得分:0)

您无法在数字数据类型上指定前导零。 您需要将其转换为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(); 

    }