File.Copy Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Copia um arquivo existente para um novo arquivo.
Sobrecargas
Copy(String, String) |
Copia um arquivo existente para um novo arquivo. Não é permitida a substituição de um arquivo de mesmo nome. |
Copy(String, String, Boolean) |
Copia um arquivo existente para um novo arquivo. É permitido substituir um arquivo de mesmo nome. |
Copy(String, String)
Copia um arquivo existente para um novo arquivo. Não é permitida a substituição de um arquivo de mesmo nome.
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)
Parâmetros
- sourceFileName
- String
O arquivo a ser copiado.
- destFileName
- String
O nome do arquivo de destino. Não pode ser um diretório ou um arquivo existente.
Exceções
O chamador não tem a permissão necessária.
sourceFileName
ou destFileName
é uma cadeia de caracteres de comprimento zero, contém somente espaços em branco ou um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().
- ou -
sourceFileName
ou destFileName
especifica um diretório.
sourceFileName
ou destFileName
é null
.
O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.
O caminho especificado em sourceFileName
ou destFileName
é inválido (por exemplo, está em uma unidade não mapeada).
sourceFileName
não foi encontrado.
sourceFileName
ou destFileName
está em um formato inválido.
Exemplos
O exemplo a seguir copia os arquivos para a pasta de backup C:\archives\2008. Ele usa as duas sobrecargas do Copy método da seguinte maneira:
Ele usa primeiro a File.Copy(String, String) sobrecarga do método para copiar arquivos de texto (.txt). O código demonstra que essa sobrecarga não permite substituir arquivos que já foram copiados.
Em seguida, ele usa a File.Copy(String, String, Boolean) sobrecarga do método para copiar imagens (.jpg arquivos). O código demonstra que essa sobrecarga permite substituir arquivos que já foram copiados.
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
Comentários
Esse método é equivalente à Copy(String, String, Boolean) sobrecarga do método com o overwrite
parâmetro definido como false
.
Os sourceFileName
destFileName
parâmetros e podem especificar informações de caminho relativo ou absoluto. As informações do caminho relativo são interpretadas como relativas ao diretório de trabalho atual. Para obter o diretório de trabalho atual, consulte o Directory.GetCurrentDirectory método. Este método não oferece suporte a caracteres curinga nos parâmetros.
Os atributos do arquivo original são mantidos no arquivo copiado.
Confira também
- Move(String, String)
- Move(String, String)
- E/S de arquivo e de fluxo
- Lendo 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
Copy(String, String, Boolean)
Copia um arquivo existente para um novo arquivo. É permitido substituir um arquivo de mesmo nome.
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)
Parâmetros
- sourceFileName
- String
O arquivo a ser copiado.
- destFileName
- String
O nome do arquivo de destino. Ele não pode ser um diretório.
- overwrite
- Boolean
true
se o arquivo de destino puder ser substituído; caso contrário, false
.
Exceções
O chamador não tem a permissão necessária.
- ou -
destFileName
é somente leitura.
- ou -
overwrite
é true
, destFileName
existe e está oculto, mas sourceFileName
não está oculto.
sourceFileName
ou destFileName
é uma cadeia de caracteres de comprimento zero, contém somente espaços em branco ou um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().
- ou -
sourceFileName
ou destFileName
especifica um diretório.
sourceFileName
ou destFileName
é null
.
O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.
O caminho especificado em sourceFileName
ou destFileName
é inválido (por exemplo, está em uma unidade não mapeada).
sourceFileName
não foi encontrado.
sourceFileName
ou destFileName
está em um formato inválido.
Exemplos
O exemplo a seguir copia os arquivos para a pasta de backup C:\archives\2008. Ele usa as duas sobrecargas do Copy método da seguinte maneira:
- Ele usa primeiro a File.Copy(String, String) sobrecarga do método para copiar arquivos de texto (.txt). O código demonstra que essa sobrecarga não permite substituir arquivos que já foram copiados.
Em seguida, ele usa a File.Copy(String, String, Boolean) sobrecarga do método para copiar imagens (.jpg arquivos). O código demonstra que essa sobrecarga permite substituir arquivos que já foram copiados.
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
Comentários
Os sourceFileName
destFileName
parâmetros e podem especificar informações de caminho relativo ou absoluto. As informações do caminho relativo são interpretadas como relativas ao diretório de trabalho atual. Este método não oferece suporte a caracteres curinga nos parâmetros.
Os atributos do arquivo original são mantidos no arquivo copiado.
Para obter uma lista de tarefas comuns de e/s, consulte tarefas comuns de e/s.
Confira também
- Move(String, String)
- Move(String, String)
- E/S de arquivo e de fluxo
- Lendo texto de um arquivo
- Como: gravar texto em um arquivo
- Como: Ler e gravar em um arquivo de dados recém-criado