复制文件具有相同的名称,但以编程方式向其添加副本数

时间:2015-08-25 16:47:47

标签: c# .net vb.net file-io

如果已存在,我想在同一个地方复制文件,然后名称应该与我们在Windows中手动执行的副本连接。

FileName: - MyPresentation.pptx to Mypresentation - copy 1.pptx

我只找到了这段代码

FileIO.FileSystem.CopyFile(sourceFileName, desFileName)
IO.File.Copy(sourceFileName, desFileName)

只允许过度写入并抛出下一个副本的异常。

3 个答案:

答案 0 :(得分:1)

这是一个简单的解决方案 - 一种迭代每个文件和用户计数器以命名文件的算法

    Dim sourceFileName As String = "C:\Users\itapi\Desktop\2a.png" 
    Dim NewFile As String = ""
    Dim count As Integer = 1

    While FileIO.FileSystem.FileExists(sourceFileName)

        NewFile = sourceFileName + "(" + count.ToString + ")"


    End While

    IO.File.Copy(sourceFileName, NewFile)

答案 1 :(得分:0)

我并不是真正意识到自动方法,但我之前已经实现了类似的功能,如果你删除了一个文件,这就像windows一样。可能有帮助 -

        string formatingString = " Copy ({0})";

        string originalDestinationName = "E:\\MyPresentation.txt";
        string sourceFileName = "C:\\Data\\MyPresentation.txt";


        int counter = 0;
        string actualDestinationPath =  originalDestinationName;
        string fileNameWithoutExt = Path.GetFileNameWithoutExtension(originalDestinationName);
        string actualDestinationDirectory = Path.GetDirectoryName(originalDestinationName);
        string ext = Path.GetExtension(originalDestinationName);
        //Check if the file exisits
        while (File.Exists(actualDestinationPath))
        {
             counter ++;
             actualDestinationPath = actualDestinationDirectory + fileNameWithoutExt + string.Format(formatingString,counter) + ext;

        }
        File.Copy(sourceFileName,  actualDestinationPath);

答案 2 :(得分:-1)

如果文件已存在,为什么不创建新文件并从源读取内容并将其写入新文件。