System.IO.FileInfo.CopyTo 方法 (String, Boolean)

方法描述

将现有文件复制到新文件,允许覆盖现有文件。

语法定义(C# System.IO.FileInfo.CopyTo 方法 (String, Boolean) 的用法)

public FileInfo CopyTo(
	string destFileName,
	bool overwrite
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
destFileName System-String 要复制到的新文件的名称。
overwrite System-Boolean 若为 true,则允许覆盖现有文件;否则为 false。
返回值 System.IO.FileInfo 新文件,或者如果 overwrite 为 true,则为现有文件的覆盖。 如果文件存在,且 overwrite 为 false,则会发生 IOException。

提示和注释

使用此方法可以允许或防止覆盖现有文件。 默认情况下,使用 CopyTo 方法来防止覆盖现有文件。

警告

在使用此方法时尽量避免使用短文件名(例如 XXXXXX~1.XXX)。 如果两个文件的短文件名等效,则此方法可能失败并引发异常,并且(或者)导致不需要的行为。

System.IO.FileInfo.CopyTo 方法 (String, Boolean)例子

下面的示例演示了如何将一个文件复制到另一文件,指定是否覆盖已存在的文件。

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() );
    }
}
//This code produces output similar to the following; 
//results may vary based on the computer/file structure/etc.:
//
//This is the information in the first file:
//Add as many lines as you like...
//Add another line to the output...
//Add as many lines as you like...
//Add another line to the output...

//This is the information in the second file:
//Add as many lines as you like...
//Add another line to the output...
//Add as many lines as you like...
//Add another line to the output...

异常

异常 异常描述
ArgumentException destFileName 为空,仅包含空白,或包含无效字符。
IOException 发生错误,或者目标文件已经存在,并且 overwrite 为 false。
SecurityException 调用方没有所要求的权限。
ArgumentNullException destFileName 为 null。
DirectoryNotFoundException destFileName 中指定的目录不存在。
UnauthorizedAccessException 传入了一个目录路径,或者正在将文件移动到另一个驱动器。
PathTooLongException 指定的路径、文件名或者两者都超出了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。
NotSupportedException destFileName 的字符串中间包含一个冒号 (:)。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。