File.Copy Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Копирует существующий файл в новый файл.
Перегрузки
Copy(String, String) |
Копирует существующий файл в новый файл. Перезапись файла с тем же именем запрещена. |
Copy(String, String, Boolean) |
Копирует существующий файл в новый файл. Допускается перезапись файла с тем же именем. |
Copy(String, String)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Копирует существующий файл в новый файл. Перезапись файла с тем же именем запрещена.
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
Файл для копирования.
- destFileName
- String
Имя целевого файла. Это не может быть каталог или существующий файл.
Исключения
Вызывающий объект не имеет требуемого разрешения.
sourceFileName
или destFileName
представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
-или-
sourceFileName
или destFileName
указывает каталог.
sourceFileName
или destFileName
null
.
Указанный путь, имя файла или оба превышают определенную системой максимальную длину.
Путь, указанный в sourceFileName
или destFileName
, является недопустимым (например, он находится на несопоставленном диске).
sourceFileName
не найден.
sourceFileName
или destFileName
имеет недопустимый формат.
Примеры
В следующем примере файлы копируются в папку резервного копирования C:\archives\2008. В нем используются две перегрузки метода Copy следующим образом:
Сначала он использует перегрузку метода File.Copy(String, String) для копирования текстовых (.txt) файлов. В коде показано, что эта перегрузка не позволяет перезаписывать файлы, которые уже были скопированы.
Затем он использует перегрузку метода File.Copy(String, String, Boolean) для копирования изображений (.jpg файлов). В коде показано, что эта перегрузка позволяет перезаписывать файлы, которые уже были скопированы.
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);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"
try
let picList = Directory.GetFiles(sourceDir, "*.jpg")
let txtList = Directory.GetFiles(sourceDir, "*.txt")
// Copy picture files.
for f in picList do
// Remove path from the file name.
let 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.
for f in txtList do
// Remove path from the file name.
let 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.
with
| :? IOException as copyError -> printfn $"{copyError.Message}"
// Delete source files that were copied.
for f in txtList do
File.Delete f
for f in picList do
File.Delete f
// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{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
.
Параметры sourceFileName
и destFileName
могут указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Чтобы получить текущий рабочий каталог, см. метод Directory.GetCurrentDirectory. Этот метод не поддерживает подстановочные знаки в параметрах.
Атрибуты исходного файла сохраняются в скопированном файле.
См. также раздел
- Move(String, String)
- Move(String, String)
- файлов и потоковой ввода-вывода
- чтение текста из файла
- Практическое руководство. Запись текста в файл
- практическое руководство. Чтение и запись в только что созданный файл данных
Применяется к
Copy(String, String, Boolean)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Копирует существующий файл в новый файл. Допускается перезапись файла с тем же именем.
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
Файл для копирования.
- destFileName
- String
Имя целевого файла. Это не может быть каталогом.
- overwrite
- Boolean
true
, если целевой файл должен быть заменен, если он уже существует; в противном случае false
.
Исключения
Вызывающий объект не имеет требуемого разрешения.
-или-
destFileName
доступно только для чтения.
-или-
overwrite
true
, destFileName
существует и скрыт, но sourceFileName
не скрыт.
sourceFileName
или destFileName
представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
-или-
sourceFileName
или destFileName
указывает каталог.
sourceFileName
или destFileName
null
.
Указанный путь, имя файла или оба превышают определенную системой максимальную длину.
Путь, указанный в sourceFileName
или destFileName
, является недопустимым (например, он находится на несопоставленном диске).
sourceFileName
не найден.
sourceFileName
или destFileName
имеет недопустимый формат.
Примеры
В следующем примере файлы копируются в папку резервного копирования C:\archives\2008. В нем используются две перегрузки метода Copy следующим образом:
- Сначала он использует перегрузку метода File.Copy(String, String) для копирования текстовых (.txt) файлов. В коде показано, что эта перегрузка не позволяет перезаписывать файлы, которые уже были скопированы.
Затем он использует перегрузку метода File.Copy(String, String, Boolean) для копирования изображений (.jpg файлов). В коде показано, что эта перегрузка позволяет перезаписывать файлы, которые уже были скопированы.
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);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"
try
let picList = Directory.GetFiles(sourceDir, "*.jpg")
let txtList = Directory.GetFiles(sourceDir, "*.txt")
// Copy picture files.
for f in picList do
// Remove path from the file name.
let 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.
for f in txtList do
// Remove path from the file name.
let 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.
with
| :? IOException as copyError -> printfn $"{copyError.Message}"
// Delete source files that were copied.
for f in txtList do
File.Delete f
for f in picList do
File.Delete f
// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{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
могут указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Этот метод не поддерживает подстановочные знаки в параметрах.
Атрибуты исходного файла сохраняются в скопированном файле.
Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.
См. также раздел
- Move(String, String)
- Move(String, String)
- файлов и потоковой ввода-вывода
- чтение текста из файла
- Практическое руководство. Запись текста в файл
- практическое руководство. Чтение и запись в только что созданный файл данных