Export (0) Print
Expand All

FileInfo.CopyTo Method (String, Boolean)

Copies an existing file to a new file, allowing the overwriting of an existing file.

Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)

public FileInfo CopyTo (
	string destFileName,
	bool overwrite
)
public FileInfo CopyTo (
	String destFileName, 
	boolean overwrite
)
public function CopyTo (
	destFileName : String, 
	overwrite : boolean
) : FileInfo

Parameters

destFileName

The name of the new file to copy to.

overwrite

true to allow an existing file to be overwritten; otherwise, false.

Return Value

A new file, or an overwrite of an existing file if overwrite is true. If the file exists and overwrite is false, an IOException is thrown.

Exception typeCondition

ArgumentException

destFileName is empty, contains only white spaces, or contains invalid characters.

IOException

An error occurs, or the destination file already exists and overwrite is false.

SecurityException

The caller does not have the required permission.

ArgumentNullException

destFileName is a null reference (Nothing in Visual Basic).

UnauthorizedAccessException

A directory path is passed in, or the file is being moved to a different drive.

PathTooLongException

The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.

NotSupportedException

destFileName contains a colon (:) in the middle of the string.

Use this method to allow or prevent overwriting of an existing file. Use the CopyTo method to prevent overwriting of an existing file by default.

Caution noteCaution

Whenever possible, avoid using short file names (such as XXXXXX~1.XXX) with this method. If two files have equivalent short file names then this method may fail and raise an exception and/or result in undesirable behavior

The following table lists examples of other typical or related I/O tasks.

To do this...

See the example in this topic...

Create a text file.

How to: Write Text to a File

Write to a text file.

How to: Write Text to a File

Read from a text file.

How to: Read Text from a File

Append text to a file.

How to: Open and Append to a Log File

File.AppendText

FileInfo.AppendText

Rename or move a file.

File.Move

FileInfo.MoveTo

Delete a file.

File.Delete

FileInfo.Delete

Read from a binary file.

How to: Read and Write to a Newly Created Data File

Write to a binary file.

How to: Read and Write to a Newly Created Data File

Move a directory.

Directory.Move

DirectoryInfo.MoveTo

Create a subdirectory.

CreateSubdirectory

Copy a directory.

Directory

The following example demonstrates both overloads of the CopyTo method.

using System;
using System.IO;

class Test 
{
	
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp\MyTest.txt" + "temp";
        FileInfo fi1 = new FileInfo(path);
        FileInfo fi2 = new FileInfo(path2);

        try 
        {
            // Create the file and clean up handles.
            using (FileStream fs = fi1.Create()) {}

            //Ensure that the target does not exist.
            fi2.Delete();

            //Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            //Try to copy it again, which should succeed.
            fi1.CopyTo(path2, true);

            Console.WriteLine("The second Copy operation succeeded, which is expected.");

        } 
        catch 
        {
            Console.WriteLine("Double copying was not allowed, which is not expected.");
        }
    }
}

import System.*;
import System.IO.*;

class Test
{
    public static void main(String[] args)
    {
        String path = "c:\\temp\\MyTest.txt";
        String path2 = "c:\\temp\\MyTest.txt" + "temp";
        FileInfo fi1 = new FileInfo(path);
        FileInfo fi2 = new FileInfo(path2);

        try {
            // Create the file and clean up handles.
            FileStream fs = fi1.Create();
            try {
            }
            finally {
                fs.Dispose();
            }

            //Ensure that the target does not exist.
            fi2.Delete();

            //Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            //Try to copy it again, which should succeed.
            fi1.CopyTo(path2, true);
            Console.WriteLine("The second Copy operation succeeded, which " 
                + "is expected.");
        }
        catch (System.Exception exp) {
            Console.WriteLine("Double copying was not allowed, which is not " 
                + " expected.");
        }
    } //main
} //Test

The following example demonstrates copying one file to another file, specifying whether to overwrite a file that already exists.

using System;
using System.IO;

public class CopyToTest 
{
    public static void Main() 
    {
        // Create a reference to a file, which might or might not exist.
        // If it does not exist, it is not yet created.
        FileInfo fi = new FileInfo("temp.txt");
        // Create a writer, ready to add entries to the file.
        StreamWriter sw = fi.AppendText();
        sw.WriteLine("Add as many lines as you like...");
        sw.WriteLine("Add another line to the output...");
        sw.Flush();
        sw.Close();
        // Get the information out of the file and display it.
        StreamReader sr = new StreamReader( fi.OpenRead() );
        Console.WriteLine("This is the information in the first file:");
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
        // Copy this file to another file. The true parameter specifies
        // that the file will be overwritten if it already exists.
        FileInfo newfi = fi.CopyTo("newTemp.txt", true);
        // Get the information out of the new file and display it.
        sr = new StreamReader( newfi.OpenRead() );
        Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine);
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
    }
}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft