FileInfo.CopyTo Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Копирует существующий файл в новый файл.
Перегрузки
CopyTo(String) |
Копирует существующий файл в новый файл и запрещает перезапись существующего файла. |
CopyTo(String, Boolean) |
Копирует существующий файл в новый файл и разрешает перезапись существующего файла. |
CopyTo(String)
- Исходный код:
- FileInfo.cs
- Исходный код:
- FileInfo.cs
- Исходный код:
- FileInfo.cs
Копирует существующий файл в новый файл и запрещает перезапись существующего файла.
public:
System::IO::FileInfo ^ CopyTo(System::String ^ destFileName);
public System.IO.FileInfo CopyTo (string destFileName);
member this.CopyTo : string -> System.IO.FileInfo
Public Function CopyTo (destFileName As String) As FileInfo
Параметры
- destFileName
- String
Имя нового файла, в который будет выполняться копирование.
Возвращаемое значение
Новый файл с полным именем.
Исключения
платформа .NET Framework и .NET Core более ранних версий, чем 2.1: destFileName
пусто, содержит только пробелы или недопустимые символы.
Произошла ошибка, или файл назначения уже существует.
У вызывающего объекта отсутствует необходимое разрешение.
destFileName
имеет значение null
.
Передан путь к каталогу, или файл перемещен на другой диск.
Каталог, указанный в destFileName
, не существует.
Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.
destFileName
содержит двоеточие (:) в строке, но не указывает том.
Примеры
В следующем примере показаны обе перегрузки CopyTo
метода .
using namespace System;
using namespace System::IO;
int main()
{
String^ path = "c:\\MyTest.txt";
String^ path2 = "c:\\MyTest.txttemp";
FileInfo^ fi1 = gcnew FileInfo( path );
FileInfo^ fi2 = gcnew FileInfo( path2 );
try
{
// Create the file and clean up handles.
FileStream^ fs = fi1->Create();
if ( fs )
delete (IDisposable^)fs;
//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 ( Exception^ )
{
Console::WriteLine( "Double copying was not allowed, which is not expected." );
}
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The second Copy operation succeeded, which is expected.
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\SoureFile.txt";
string path2 = @"c:\NewFile.txt";
FileInfo fi1 = new FileInfo(path);
FileInfo fi2 = new FileInfo(path2);
try
{
// Create the source file.
using (FileStream fs = fi1.Create()) { }
//Ensure that the target file does not exist.
if (File.Exists(path2))
{
fi2.Delete();
}
//Copy the file.f
fi1.CopyTo(path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
}
catch (IOException ioex)
{
Console.WriteLine(ioex.Message);
}
}
}
Imports System.IO
Public Class Test
Public Shared Sub Main()
'Specify the directories you want to manipulate.
Dim path As String = "c:\SourceFile.txt"
Dim path2 As String = "c:\NewFile.txt"
Dim fi As FileInfo = New FileInfo(path)
Dim fi2 As FileInfo = New FileInfo(path2)
Try
Using fs As FileStream = fi.Create()
End Using
'Ensure that the target does not exist.
If File.Exists(path2) Then
fi2.Delete()
End If
'Copy the file.
fi.CopyTo(path2)
Console.WriteLine("{0} was copied to {1}.", path, path2)
Catch ioex As IOException
Console.WriteLine(ioex.Message)
End Try
End Sub
End Class
В следующем примере показано копирование одного файла в другой, что создает исключение, если целевой файл уже существует.
using namespace System;
using namespace System::IO;
int main()
{
try
{
// Create a reference to a file, which might or might not exist.
// If it does not exist, it is not yet created.
FileInfo^ fi = gcnew 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 = gcnew 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 file will not be overwritten if it already exists.
FileInfo^ newfi = fi->CopyTo( "newTemp.txt" );
// 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() );
}
catch ( Exception^ e )
{
Console::WriteLine( e->Message );
}
}
//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...
//
//This is the information in the second file:
using System;
using System.IO;
public class CopyToTest
{
public static void Main()
{
try
{
// 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 file will not be overwritten if it already exists.
FileInfo newfi = fi.CopyTo("newTemp.txt");
// 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());
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
}
//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...
//This is the information in the second file:
//Add as many lines as you like...
//Add another line to the output...
Imports System.IO
Public Class CopyToTest
Public Shared Sub Main()
Try
' Create a reference to a file, which might or might not exist.
' If it does not exist, it is not yet created.
Dim fi As New FileInfo("temp.txt")
' Create a writer, ready to add entries to the file.
Dim sw As StreamWriter = 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.
Dim sr As New StreamReader(fi.OpenRead())
Console.WriteLine("This is the information in the first file:")
While sr.Peek() <> -1
Console.WriteLine(sr.ReadLine())
End While
' Copy this file to another file.
Dim newfi As FileInfo = fi.CopyTo("newTemp.txt")
' 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())
End While
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Class
'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...
'
'This is the information in the second file:
'Add as many lines as you like...
'Add another line to the output...
Комментарии
Используйте метод , CopyTo(String, Boolean) чтобы разрешить перезапись существующего файла.
Внимание!
По возможности избегайте использования коротких имен файлов (например, XXXXXX~1.XXX) в этом методе. Если два файла имеют эквивалентные короткие имена файлов, этот метод может завершиться ошибкой и вызвать исключение и (или) привести к нежелательному поведению.
См. также раздел
- Файловый и потоковый ввод-вывод
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл
- Практическое руководство. Считывание данных из нового файла и запись в этот файл
Применяется к
CopyTo(String, Boolean)
- Исходный код:
- FileInfo.cs
- Исходный код:
- FileInfo.cs
- Исходный код:
- FileInfo.cs
Копирует существующий файл в новый файл и разрешает перезапись существующего файла.
public:
System::IO::FileInfo ^ CopyTo(System::String ^ destFileName, bool overwrite);
public System.IO.FileInfo CopyTo (string destFileName, bool overwrite);
member this.CopyTo : string * bool -> System.IO.FileInfo
Public Function CopyTo (destFileName As String, overwrite As Boolean) As FileInfo
Параметры
- destFileName
- String
Имя нового файла, в который будет выполняться копирование.
- overwrite
- Boolean
Значение true
позволяет разрешить перезапись существующего файла; в противном случае — значение false
.
Возвращаемое значение
Новый файл или перезапись существующего файла, если для параметра overwrite
задано значение true
. Если файл существует и для параметра overwrite
задано значение false
, создается исключение IOException.
Исключения
платформа .NET Framework и .NET Core более ранних версий, чем 2.1: destFileName
пусто, содержит только пробелы или недопустимые символы.
Произошла ошибка, или файл назначения уже существует, а overwrite
имеет значение false
.
У вызывающего объекта отсутствует необходимое разрешение.
destFileName
имеет значение null
.
Каталог, указанный в destFileName
, не существует.
Передан путь к каталогу, или файл перемещен на другой диск.
Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.
destFileName
содержит двоеточие (:) в середине строки.
Примеры
В следующем примере показаны обе перегрузки CopyTo
метода .
using namespace System;
using namespace System::IO;
int main()
{
String^ path = "c:\\MyTest.txt";
String^ path2 = "c:\\MyTest.txttemp";
FileInfo^ fi1 = gcnew FileInfo( path );
FileInfo^ fi2 = gcnew FileInfo( path2 );
try
{
// Create the file and clean up handles.
FileStream^ fs = fi1->Create();
if ( fs )
delete (IDisposable^)fs;
//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 ( Exception^ )
{
Console::WriteLine( "Double copying was not allowed, which is not expected." );
}
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The second Copy operation succeeded, which is expected.
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\SoureFile.txt";
string path2 = @"c:\NewFile.txt";
FileInfo fi1 = new FileInfo(path);
FileInfo fi2 = new FileInfo(path2);
try
{
// Create the source file.
using (FileStream fs = fi1.Create()) { }
//Ensure that the target file does not exist.
if (File.Exists(path2))
{
fi2.Delete();
}
//Copy the file.f
fi1.CopyTo(path2);
Console.WriteLine("{0} was copied to {1}.", path, path2);
}
catch (IOException ioex)
{
Console.WriteLine(ioex.Message);
}
}
}
Imports System.IO
Public Class Test
Public Shared Sub Main()
'Specify the directories you want to manipulate.
Dim path As String = "c:\SourceFile.txt"
Dim path2 As String = "c:\NewFile.txt"
Dim fi As FileInfo = New FileInfo(path)
Dim fi2 As FileInfo = New FileInfo(path2)
Try
Using fs As FileStream = fi.Create()
End Using
'Ensure that the target does not exist.
If File.Exists(path2) Then
fi2.Delete()
End If
'Copy the file.
fi.CopyTo(path2)
Console.WriteLine("{0} was copied to {1}.", path, path2)
Catch ioex As IOException
Console.WriteLine(ioex.Message)
End Try
End Sub
End Class
В следующем примере показано копирование одного файла в другой, указывая, следует ли перезаписать уже существующий файл.
using namespace System;
using namespace System::IO;
int 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 = gcnew 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 = gcnew 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...
//This is the information in the second file:
//
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...
Imports System.IO
Public Class CopyToTest
Public Shared Sub Main()
' Create a reference to a file, which might or might not exist.
' If it does not exist, it is not yet created.
Dim fi As New FileInfo("temp.txt")
' Create a writer, ready to add entries to the file.
Dim sw As StreamWriter = 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.
Dim sr As New StreamReader(fi.OpenRead())
Console.WriteLine("This is the information in the first file:")
While sr.Peek() <> -1
Console.WriteLine(sr.ReadLine())
End While
' Copy this file to another file. The true parameter specifies
' that the file will be overwritten if it already exists.
Dim newfi As FileInfo = 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())
End While
End Sub
End Class
'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...
'
'This is the information in the second file:
'Add as many lines as you like...
'Add another line to the output...
'
Комментарии
Используйте этот метод, чтобы разрешить или запретить перезапись существующего файла. Используйте метод , CopyTo(String) чтобы предотвратить перезапись существующего файла по умолчанию.
Внимание!
По возможности избегайте использования коротких имен файлов (например, XXXXXX~1.XXX) в этом методе. Если два файла имеют эквивалентные короткие имена файлов, этот метод может завершиться ошибкой и вызвать исключение и (или) привести к нежелательному поведению.
См. также раздел
- Файловый и потоковый ввод-вывод
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл
- Практическое руководство. Считывание данных из нового файла и запись в этот файл