File.Copy File.Copy File.Copy File.Copy Method

Определение

Копирует существующий файл в новый файл.Copies an existing file to a new file.

Перегрузки

Copy(String, String) Copy(String, String) Copy(String, String) Copy(String, String)

Копирует существующий файл в новый файл.Copies an existing file to a new file. Перезапись файла с тем же именем не разрешена.Overwriting a file of the same name is not allowed.

Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean)

Копирует существующий файл в новый файл.Copies an existing file to a new file. Перезапись файла с тем же именем разрешена.Overwriting a file of the same name is allowed.

Copy(String, String) Copy(String, String) Copy(String, String) Copy(String, String)

Копирует существующий файл в новый файл.Copies an existing file to a new file. Перезапись файла с тем же именем не разрешена.Overwriting a file of the same name is not allowed.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName);
public static void Copy (string sourceFileName, string destFileName);
static member Copy : string * string -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String)

Параметры

sourceFileName
String String String String

Копируемый файл.The file to copy.

destFileName
String String String String

Имя конечного файла.The name of the destination file. Это не может быть имя каталога или имя существующего файла.This cannot be a directory or an existing file.

Исключения

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

sourceFileName или destFileName представляет собой строку нулевой длины, содержащую только пробелы или содержащую один или несколько недопустимых символов, заданных методом InvalidPathChars.sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

-или--or- Параметр sourceFileName или destFileName определяет каталог.sourceFileName or destFileName specifies a directory.

Значение параметра sourceFileName или destFileNamenull.sourceFileName or destFileName is null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.The specified path, file name, or both exceed the system-defined maximum length.

В sourceFileName или destFileName указан недопустимый путь (например, ведущий на несопоставленный диск).The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

Не удалось найти sourceFileName.sourceFileName was not found.

destFileName существует.destFileName exists.

-или--or- Произошла ошибка ввода-вывода.An I/O error has occurred.

Параметр sourceFileName или destFileName имеет недопустимый формат.sourceFileName or destFileName is in an invalid format.

Примеры

Следующий пример копирует файлы в папку резервного копирования C:\archives\2008.The following example copies files to the C:\archives\2008 backup folder. Он использует два перегруженных Copy метод следующим образом:It uses the two overloads of the Copy method as follows:

  • Сначала используется File.Copy(String, String) перегруженный метод, чтобы скопировать файлы txt (обычный текст).It first uses the File.Copy(String, String) method overload to copy text (.txt) files. В коде показано, что эта перегрузка не разрешает перезапись файлов, которые уже были скопированы.The code demonstrates that this overload does not allow overwriting files that were already copied.

  • Затем он использует File.Copy(String, String, Boolean) перегруженный метод, чтобы скопировать изображений (JPG-файлов).It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). В коде показано, что эта перегрузка перезапись существующих файлов, которые уже были скопированы.The code demonstrates that this overload does allow overwriting files that were already copied.

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

Комментарии

Этот метод эквивалентен Copy(String, String, Boolean) перегрузку метода с overwrite параметру присвоить false.This method is equivalent to the Copy(String, String, Boolean) method overload with the overwrite parameter set to false.

sourceFileName И destFileName параметров можно указать относительный или абсолютный путь сведения.The sourceFileName and destFileName parameters can specify relative or absolute path information. Сведения о относительный путь интерпретируется относительно текущего рабочего каталога.Relative path information is interpreted as relative to the current working directory. Чтобы получить текущий рабочий каталог, см. в разделе Directory.GetCurrentDirectory метод.To obtain the current working directory, see the Directory.GetCurrentDirectory method. Этот метод не поддерживает подстановочные знаки в параметрах.This method does not support wildcard characters in the parameters.

Атрибуты исходного файла, сохраняются в скопированный файл.The attributes of the original file are retained in the copied file.

Безопасность

FileIOPermission
для чтения данных из sourceFileName и запись destFileName.for reading from sourceFileName and writing to destFileName. Связанное перечисление: Read, WriteAssociated enumerations: Read, Write

Дополнительно

Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean)

Копирует существующий файл в новый файл.Copies an existing file to a new file. Перезапись файла с тем же именем разрешена.Overwriting a file of the same name is allowed.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite);
public static void Copy (string sourceFileName, string destFileName, bool overwrite);
static member Copy : string * string * bool -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String, overwrite As Boolean)

Параметры

sourceFileName
String String String String

Копируемый файл.The file to copy.

destFileName
String String String String

Имя конечного файла.The name of the destination file. Это не может быть имя каталога.This cannot be a directory.

overwrite
Boolean Boolean Boolean Boolean

true, если конечный файл можно перезаписать; в противном случае — false.true if the destination file can be overwritten; otherwise, false.

Исключения

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

-или--or- Объект destFileName доступен только для чтения.destFileName is read-only.

-или--or- overwrite равен true, destFileName существует и скрыт, но sourceFileName не скрыт.overwrite is true, destFileName exists and is hidden, but sourceFileName is not hidden.

sourceFileName или destFileName представляет собой строку нулевой длины, содержащую только пробелы или содержащую один или несколько недопустимых символов, заданных методом InvalidPathChars.sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

-или--or- Параметр sourceFileName или destFileName определяет каталог.sourceFileName or destFileName specifies a directory.

Значение параметра sourceFileName или destFileNamenull.sourceFileName or destFileName is null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.The specified path, file name, or both exceed the system-defined maximum length.

В sourceFileName или destFileName указан недопустимый путь (например, ведущий на несопоставленный диск).The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

Не удалось найти sourceFileName.sourceFileName was not found.

destFileName существует, и overwrite равно false.destFileName exists and overwrite is false.

-или--or- Произошла ошибка ввода-вывода.An I/O error has occurred.

Параметр sourceFileName или destFileName имеет недопустимый формат.sourceFileName or destFileName is in an invalid format.

Примеры

Следующий пример копирует файлы в папку резервного копирования C:\archives\2008.The following example copies files to the C:\archives\2008 backup folder. Он использует два перегруженных Copy метод следующим образом:It uses the two overloads of the Copy method as follows:

  • Сначала используется File.Copy(String, String) перегруженный метод, чтобы скопировать файлы txt (обычный текст).It first uses the File.Copy(String, String) method overload to copy text (.txt) files. В коде показано, что эта перегрузка не разрешает перезапись файлов, которые уже были скопированы.The code demonstrates that this overload does not allow overwriting files that were already copied.

Затем он использует File.Copy(String, String, Boolean) перегруженный метод, чтобы скопировать изображений (JPG-файлов).It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). В коде показано, что эта перегрузка перезапись существующих файлов, которые уже были скопированы.The code demonstrates that this overload does allow overwriting files that were already copied.

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

Комментарии

sourceFileName И destFileName параметров можно указать относительный или абсолютный путь сведения.The sourceFileName and destFileName parameters can specify relative or absolute path information. Сведения о относительный путь интерпретируется относительно текущего рабочего каталога.Relative path information is interpreted as relative to the current working directory. Этот метод не поддерживает подстановочные знаки в параметрах.This method does not support wildcard characters in the parameters.

Атрибуты исходного файла, сохраняются в скопированный файл.The attributes of the original file are retained in the copied file.

Список задач ввода-вывода, см. в разделе распространенные задачи ввода-вывода.For a list of common I/O tasks, see Common I/O Tasks.

Безопасность

FileIOPermission
для чтения данных из sourceFileName и запись destFileName.for reading from sourceFileName and writing to destFileName. Связанное перечисление: Read, WriteAssociated enumerations: Read, Write

Дополнительно

Применяется к