如何将文件复制到另一个路径?

时间:2009-12-30 12:20:30

标签: c# file-io

我需要将文件复制到另一条路径,将原始文件保留在原来的位置。

我也希望能够重命名该文件。

FileInfo的CopyTo方法是否有效?

10 个答案:

答案 0 :(得分:76)

查看File.Copy()

使用File.Copy,您可以将新文件名指定为目标字符串的一部分。

类似

File.Copy(@"c:\test.txt", @"c:\test\foo.txt");

另见How to: Copy, Delete, and Move Files and Folders (C# Programming Guide)

答案 1 :(得分:7)

我尝试将xml文件从一个位置复制到另一个位置。这是我的代码:

public void SaveStockInfoToAnotherFile()
{
    string sourcePath = @"C:\inetpub\wwwroot";
    string destinationPath = @"G:\ProjectBO\ForFutureAnalysis";
    string sourceFileName = "startingStock.xml";
    string destinationFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".xml"; // Don't mind this. I did this because I needed to name the copied files with respect to time.
    string sourceFile = System.IO.Path.Combine(sourcePath, sourceFileName);
    string destinationFile = System.IO.Path.Combine(destinationPath, destinationFileName);

    if (!System.IO.Directory.Exists(destinationPath))
       {
         System.IO.Directory.CreateDirectory(destinationPath);
       }
    System.IO.File.Copy(sourceFile, destinationFile, true);
}

然后我在一定间隔的timer_elapsed函数中调用了这个函数,我认为你不需要看。有效。希望这会有所帮助。

答案 2 :(得分:6)

是。它会起作用:FileInfo.CopyTo Method

  

使用此方法允许或阻止覆盖现有文件。使用CopyTo方法可以防止默认覆盖现有文件。

所有其他回复都是正确的,但由于您要求FileInfo,以下是一个示例:

FileInfo fi = new FileInfo(@"c:\yourfile.ext");
fi.CopyTo(@"d:\anotherfile.ext", true); // existing file will be overwritten

答案 3 :(得分:4)

您还可以使用File.Copy进行复制,并File.Move将其重命名为。

// Copy the file (specify true or false to overwrite or not overwrite the destination file if it exists.
File.Copy(mySourceFileAndPath, myDestinationFileAndPath, [true | false]);

// EDIT: as "astander" notes correctly, this step is not necessary, as File.Copy can rename already...
//       However, this code could be adapted to rename the original file after copying
// Rename the file if the destination file doesn't exist. Throw exception otherwise
//if (!File.Exists(myRenamedDestinationFileAndPath))
//    File.Move(myDestinationFileAndPath, myRenamedDestinationFileAndPath);
//else
//    throw new IOException("Failed to rename file after copying, because destination file exists!");

修改
注释掉了“重命名”代码,因为File.Copy已经可以在一个步骤中复制和重命名,正如旁观者在评论中正确指出的那样。

但是,如果OP希望在将源文件复制到新位置后重命名,则可以调整重命名代码。

答案 4 :(得分:2)

File :: Copy会将文件复制到目标文件夹,File :: Move可以移动和重命名文件。

答案 5 :(得分:2)

string directoryPath = Path.GetDirectoryName(destinationFileName);

// If directory doesn't exist create one
if (!Directory.Exists(directoryPath))
{
DirectoryInfo di = Directory.CreateDirectory(directoryPath);
}

File.Copy(sourceFileName, destinationFileName);

答案 6 :(得分:0)

这是我将测试文件从下载内容移动到桌面的方法。 我希望它有用。

<div id="collection">
    <div>title,description,comments</div>
    ....
    </div>

答案 7 :(得分:0)

老问题,但我想添加完整的控制台应用程序示例,考虑到您拥有给定文件夹的文件和适当的权限,这里是代码

 class Program
 {
    static void Main(string[] args)
    {
        //path of file
        string pathToOriginalFile = @"E:\C-sharp-IO\test.txt";

        
        //duplicate file path 
        string PathForDuplicateFile = @"E:\C-sharp-IO\testDuplicate.txt";
         
          //provide source and destination file paths
        File.Copy(pathToOriginalFile, PathForDuplicateFile);

        Console.ReadKey();

    }
}

来源:File I/O in C# (Read, Write, Delete, Copy file using C#)

答案 8 :(得分:-1)

复制文件夹我使用两个文本框知道文件夹和花药文本框的位置知道什么文件夹复制它这是代码

In [61]:

m = 2
a = np.arange(1, 4)
i = np.arange(len(a))
indexer = (i - m * np.atleast_2d(i).T) % len(a)
a[indexer]

Out[61]:
array([[1, 2, 3],
       [2, 3, 1],
       [3, 1, 2]])

答案 9 :(得分:-2)

File.Move(@"c:\filename", @"c:\filenamet\filename.txt");