File.Move(String, String) 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.
Move um ficheiro especificado para uma nova localização, oferecendo a opção de especificar um novo nome de ficheiro.
public:
static void Move(System::String ^ sourceFileName, System::String ^ destFileName);
public static void Move(string sourceFileName, string destFileName);
static member Move : string * string -> unit
Public Shared Sub Move (sourceFileName As String, destFileName As String)
Parâmetros
- sourceFileName
- String
O nome do ficheiro a mover. Pode incluir um caminho relativo ou absoluto.
- destFileName
- String
O novo caminho e nome do ficheiro.
Exceções
destFileName já existe.
-ou-
Ocorreu um erro de E/S, por exemplo, ao copiar o ficheiro entre volumes de disco.
sourceFileName não foi encontrado.
sourceFileName ou destFileName é null.
.NET Framework e .NET Core versões anteriores à 2.1: sourceFileName ou destFileName é uma cadeia de comprimento zero, contém apenas espaço em branco ou contém caracteres inválidos. Pode consultar caracteres inválidos usando o GetInvalidPathChars() método.
O interlocutor não tem a permissão necessária.
O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.
O caminho especificado em sourceFileName ou destFileName é inválido (por exemplo, está num disco não mapeado).
sourceFileName ou destFileName está num formato inválido.
Exemplos
O exemplo seguinte move um ficheiro.
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
string path2 = @"c:\temp2\MyTest.txt";
try
{
if (!File.Exists(path))
{
// This statement ensures that the file is created,
// but the handle is not kept.
using (FileStream fs = File.Create(path)) {}
}
// Ensure that the target does not exist.
if (File.Exists(path2))
File.Delete(path2);
// Move the file.
File.Move(path, path2);
Console.WriteLine("{0} was moved to {1}.", path, path2);
// See if the original exists now.
if (File.Exists(path))
{
Console.WriteLine("The original file still exists, which is unexpected.");
}
else
{
Console.WriteLine("The original file no longer exists, which is expected.");
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
open System.IO
let path = @"c:\temp\MyTest.txt"
let path2 = @"c:\temp2\MyTest.txt"
if File.Exists path |> not then
// This statement ensures that the file is created,
// but the handle is not kept.
use _ = File.Create path
()
// Ensure that the target does not exist.
if File.Exists path2 then
File.Delete path2
// Move the file.
File.Move(path, path2)
printfn $"{path} was moved to {path2}."
// See if the original exists now.
if File.Exists path then
printfn "The original file still exists, which is unexpected."
else
printfn "The original file no longer exists, which is expected."
Imports System.IO
Imports System.Text
Public Class Test
Public Shared Sub Main()
Dim path As String = "c:\temp\MyTest.txt"
Dim path2 As String = "c:\temp2\MyTest.txt"
Try
If File.Exists(path) = False Then
' This statement ensures that the file is created,
' but the handle is not kept.
Dim fs As FileStream = File.Create(path)
fs.Close()
End If
' Ensure that the target does not exist.
If File.Exists(path2) Then
File.Delete(path2)
End If
' Move the file.
File.Move(path, path2)
Console.WriteLine("{0} moved to {1}", path, path2)
' See if the original file exists now.
If File.Exists(path) Then
Console.WriteLine("The original file still exists, which is unexpected.")
Else
Console.WriteLine("The original file no longer exists, which is expected.")
End If
Catch e As Exception
Console.WriteLine("The process failed: {0}", e.ToString())
End Try
End Sub
End Class
Observações
Este método funciona entre vários volumes de disco e não lança exceção se a origem e o destino forem iguais.
Note que, se tentar substituir um ficheiro movendo um ficheiro com o mesmo nome para esse diretório, um IOException é lançado. Para evitar este problema:
No .NET Core 3.0 e versões posteriores, pode chamar Move(String, String, Boolean) definir o parâmetro
overwriteparatrue, que substitui o ficheiro se existir.Em todas as .NET versões, podes chamar Copy(String, String, Boolean) para copiar com sobrescrever, depois chamar
Deletepara remover o ficheiro fonte em excesso. Esta estratégia não é atómica, porque um crash do sistema ou programa durante oCopypode deixar um ficheiro de destino parcialmente escrito, mas garantirá que um ficheiro (possivelmente incompleto) exista sempre no destino.Em todas as .NET versões, pode chamar Delete(String) antes de chamar
Move, que só apagará o ficheiro se existir.
Os sourceFileName argumentos e destFileName podem incluir informação relativa ou absoluta do caminho. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.
Mover o ficheiro entre volumes de disco é equivalente a copiar o ficheiro e apagá-lo da fonte se a cópia tiver sido bem-sucedida.
Se tentares mover um ficheiro entre volumes de disco e esse ficheiro estiver em uso, o ficheiro é copiado para o destino, mas não é eliminado da fonte.
Para uma lista de tarefas comuns de E/S, consulte Tarefas Comuns de E/S.