FileInfo.CopyTo Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Copia um ficheiro existente para um novo ficheiro.
Sobrecargas
| Name | Description |
|---|---|
| CopyTo(String) |
Copia um ficheiro existente para um novo ficheiro, impedindo a sobreposição de um ficheiro existente. |
| CopyTo(String, Boolean) |
Copia um ficheiro existente para um novo ficheiro, permitindo a sobreposição de um ficheiro existente. |
CopyTo(String)
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
Copia um ficheiro existente para um novo ficheiro, impedindo a sobreposição de um ficheiro existente.
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
Parâmetros
- destFileName
- String
O nome do novo ficheiro para copiar.
Devoluções
Um novo processo com um percurso totalmente qualificado.
Exceções
.NET Framework e .NET Core versões anteriores à 2.1: destFileName está vazio, contém apenas espaços em branco ou contém caracteres inválidos.
Ocorre um erro, ou o ficheiro de destino já existe.
O interlocutor não tem a permissão necessária.
destFileName é null.
É passado um caminho de diretório, ou o ficheiro está a ser movido para outro disco.
O diretório especificado em destFileName não existe.
O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.
destFileName contém dois pontos (:) dentro da cadeia, mas não especifica o volume.
Exemplos
O exemplo seguinte demonstra ambas as sobrecargas do CopyTo método.
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
O exemplo seguinte demonstra a cópia de um ficheiro para outro, lançando uma exceção se o ficheiro de destino já existir.
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...
Observações
Use o CopyTo(String, Boolean) método para permitir sobrescrever um ficheiro existente.
Atenção
Sempre que possível, evite usar nomes de ficheiros curtos (como XXXXXX~1.XXX) com este método. Se dois ficheiros tiverem nomes de ficheiros curtos equivalentes, este método pode falhar e gerar uma exceção e/ou resultar em comportamento indesejável
Ver também
- E/S de arquivo e fluxo
- Como: Ler texto de um arquivo
- Como: Gravar texto em um arquivo
- Como: Ler e gravar em um arquivo de dados recém-criado
Aplica-se a
CopyTo(String, Boolean)
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
- Origem:
- FileInfo.cs
Copia um ficheiro existente para um novo ficheiro, permitindo a sobreposição de um ficheiro existente.
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
Parâmetros
- destFileName
- String
O nome do novo ficheiro para copiar.
- overwrite
- Boolean
true permitir que um ficheiro existente seja sobrescrito; caso contrário, false.
Devoluções
Um novo ficheiro, ou uma sobrscrição de um ficheiro existente se overwrite for true. Se o ficheiro existir e overwrite for false, um IOException é lançado.
Exceções
.NET Framework e .NET Core versões anteriores à 2.1: destFileName está vazio, contém apenas espaços em branco ou contém caracteres inválidos.
Ocorre um erro, ou o ficheiro de destino já existe e overwrite é false.
O interlocutor não tem a permissão necessária.
destFileName é null.
O diretório especificado em destFileName não existe.
É passado um caminho de diretório, ou o ficheiro está a ser movido para outro disco.
O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.
destFileName contém dois pontos (:) no meio da corda.
Exemplos
O exemplo seguinte demonstra ambas as sobrecargas do CopyTo método.
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
O exemplo seguinte demonstra a cópia de um ficheiro para outro, especificando se deve sobrescrever um ficheiro que já existe.
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...
'
Observações
Use este método para permitir ou evitar a sobrescrevimento de um ficheiro existente. Use o CopyTo(String) método para evitar a sobrescrição de um ficheiro existente por defeito.
Atenção
Sempre que possível, evite usar nomes de ficheiros curtos (como XXXXXX~1.XXX) com este método. Se dois ficheiros tiverem nomes de ficheiros curtos equivalentes, este método pode falhar e gerar uma exceção e/ou resultar em comportamento indesejável
Ver também
- E/S de arquivo e fluxo
- Como: Ler texto de um arquivo
- Como: Gravar texto em um arquivo
- Como: Ler e gravar em um arquivo de dados recém-criado