Summary: in this tutorial, you’ll learn how to copy an existing file to a new file using the C#
method.File.Copy
()
Introduction to the C# File.Copy() method
The C#
method allows you to copy an existing file to a new fileFile.Copy
()
public static void Copy (
string sourceFileName,
string destFileName
);
Code language: C# (cs)
In this syntax, the sourceFileName
is the file to copy and the destFileName
is the name of the destination file.
If the sourceFileName
doesn’t exist, the Copy()
method raises a FileNotFoundExcpetion
.
If an I/O error occurs during the copying of the file e.g., the desFilename
already exists, the File.Copy()
method raises an IOException
.
File.Copy() method example
The following example demonstrates how to copy readme.txt
file from C:\temp
directory to the C:\backup
directory:
using static System.Console;
string sourceDir = @"C:\temp";
string backupDir = @"C:\backup";
string filename = @"readme.txt";
File.Copy(
Path.Combine(sourceDir, filename),
Path.Combine(backupDir, filename)
);
Code language: C# (cs)
How it works.
First, define two variables that hold paths to the temp and backup directories:
string sourceDir = @"C:\temp";
string backupDir = @"C:\backup";
Code language: C# (cs)
Second, declare a filename variable and initialize it with the “readme.txt
“:
string filename = @"readme.txt";
Code language: C# (cs)
Third, use the Path.Combine()
method to create a path to the source and destination file and
method to copy the File.Copy
()readme.txt
file for the C:\temp
directory to the C:\backup
directory:
File.Copy(
Path.Combine(sourceDir, filename),
Path.Combine(backupDir, filename)
);
Code language: C# (cs)
When copying the file, an I/O error may occur. To handle it more gracefully, you can place the
inside a File.Copy
()try...catch
statement like this:
using static System.Console;
string sourceDir = @"C:\temp";
string backupDir = @"C:\backup";
string filename = @"readme.txt";
try
{
File.Copy(
Path.Combine(sourceDir, filename),
Path.Combine(backupDir, filename)
);
}
catch (IOException ex)
{
WriteLine(ex.Message);
}
Code language: C# (cs)
For example, if the C:\backup\readme.txt
already exists, you’ll get the following error message in the console:
Could not find file 'C:\temp\readme.txt'.
Code language: C# (cs)
Similarly, if the C:\temp\readme.txt
file does not exist, the program shows the following error message:
The file 'C:\backup\readme.txt' already exists.
Code language: C# (cs)
Using File.Copy() to overwrite the destination file
If you want to overwrite the destination file if it exists, you can use an overload of the
method:File.Copy
()
public static void Copy (
string sourceFileName,
string destFileName,
bool overwrite
);
Code language: C# (cs)
When you set the overwrite argument to rue, the Copy()
method will overwrite the destFileName
file if it exists.
For example:
using static System.Console;
string sourceDir = @"C:\temp";
string backupDir = @"C:\backup";
string filename = @"readme.txt";
try
{
File.Copy(
Path.Combine(sourceDir, filename),
Path.Combine(backupDir, filename),
true
);
}
catch (IOException ex)
{
WriteLine(ex.Message);
}
Code language: C# (cs)
In this example, we use
method to copy the File.Copy
()
from readme.txt
C:\temp
directory to the C:\backup
directory and overwrite if the C:\backup
already has the
file.readme.txt
Summary
- Use
method to copy an existing file to a new one and optionally overwrite the new file if it exists.File.Copy
()