Sdílet prostřednictvím


File.Move Metoda

Definice

Přetížení

Name Description
Move(String, String)

Přesune zadaný soubor do nového umístění a poskytne možnost zadat nový název souboru.

Move(String, String, Boolean)

Přesune zadaný soubor do nového umístění a poskytne možnosti pro zadání nového názvu souboru a nahrazení cílového souboru, pokud již existuje.

Move(String, String)

Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs

Přesune zadaný soubor do nového umístění a poskytne možnost zadat nový název souboru.

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)

Parametry

sourceFileName
String

Název souboru, který chcete přesunout. Může obsahovat relativní nebo absolutní cestu.

destFileName
String

Nová cesta a název souboru.

Výjimky

destFileName již existuje.

nebo

Došlo k vstupně-výstupní chybě, například při kopírování souboru mezi diskovými svazky.

sourceFileName nebyl nalezen.

sourceFileName nebo destFileName je null.

Verze .NET Framework a .NET Core starší než 2.1: sourceFileName nebo destFileName je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Pomocí metody můžete zadat dotaz na neplatné znaky GetInvalidPathChars() .

Volající nemá požadované oprávnění.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

Cesta zadaná v sourceFileName nebo destFileName je neplatná (například je na nemapované jednotce).

sourceFileName nebo destFileName je v neplatném formátu.

Příklady

Následující příklad přesune soubor.

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

Poznámky

Tato metoda funguje na svazcích disků a nevyvolá výjimku, pokud zdroj a cíl jsou stejné.

Všimněte si, že pokud se pokusíte nahradit soubor přesunutím souboru se stejným názvem do tohoto adresáře, IOException vyvolá se chyba. Chcete-li se tomuto problému vyhnout:

  • V .NET Core 3.0 a novějších verzích můžete volat Move(String, String, Boolean) nastavení parametru overwrite na true, který nahradí soubor, pokud existuje.

  • Ve všech verzích .NET můžete volat Copy(String, String, Boolean) kopírování s přepsáním a pak voláním Delete odebrat nadbytečný zdrojový soubor. Tato strategie není atomická, protože při chybovém ukončení Copy systému nebo programu může zanechat částečně napsaný cílový soubor, ale zajistí, aby v cíli vždy existoval (pravděpodobně neúplný) soubor.

  • Ve všech verzích .NET můžete volat Delete(String) před voláním Move, což odstraní pouze soubor, pokud existuje.

Argumenty sourceFileName mohou destFileName obsahovat relativní nebo absolutní informace o cestě. Relativní informace o cestě se interpretují jako relativní vzhledem k aktuálnímu pracovnímu adresáři. Aktuální pracovní adresář získáte v tématu GetCurrentDirectory.

Přesunutí souboru mezi diskovými svazky odpovídá zkopírování souboru a jeho odstranění ze zdroje, pokud kopírování proběhlo úspěšně.

Pokud se pokusíte přesunout soubor mezi diskovými svazky a tento soubor se používá, zkopíruje se do cíle, ale neodstraní se ze zdroje.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Viz také

Platí pro

Move(String, String, Boolean)

Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs
Zdroj:
File.cs

Přesune zadaný soubor do nového umístění a poskytne možnosti pro zadání nového názvu souboru a nahrazení cílového souboru, pokud již existuje.

public:
 static void Move(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite);
public static void Move(string sourceFileName, string destFileName, bool overwrite);
static member Move : string * string * bool -> unit
Public Shared Sub Move (sourceFileName As String, destFileName As String, overwrite As Boolean)

Parametry

sourceFileName
String

Název souboru, který chcete přesunout. Může obsahovat relativní nebo absolutní cestu.

destFileName
String

Nová cesta a název souboru.

overwrite
Boolean

true nahradit cílový soubor, pokud již existuje; false Jinak.

Výjimky

destFileName již existuje a overwrite je false.

nebo

Došlo k vstupně-výstupní chybě, například při kopírování souboru mezi diskovými svazky.

sourceFileName nebyl nalezen.

sourceFileName nebo destFileName je null.

Verze .NET Framework a .NET Core starší než 2.1: sourceFileName nebo destFileName je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Pomocí metody můžete zadat dotaz na neplatné znaky GetInvalidPathChars() .

Volající nemá požadované oprávnění.

nebo

Operační systém se nepodařilo získat výhradní přístup k cílovému souboru.

Zadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.

Cesta zadaná v sourceFileName nebo destFileName je neplatná (například je na nemapované jednotce).

sourceFileName nebo destFileName je v neplatném formátu.

Příklady

Následující příklad přesune soubor.

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

Poznámky

Tato metoda funguje na svazcích disků a nevyvolá výjimku, pokud zdroj a cíl jsou stejné.

Argumenty sourceFileName mohou destFileName obsahovat relativní nebo absolutní informace o cestě. Relativní informace o cestě se interpretují jako relativní vzhledem k aktuálnímu pracovnímu adresáři. Aktuální pracovní adresář získáte v tématu GetCurrentDirectory.

Přesunutí souboru mezi diskovými svazky odpovídá zkopírování souboru a jeho odstranění ze zdroje, pokud kopírování proběhlo úspěšně.

Pokud se pokusíte přesunout soubor mezi diskovými svazky a tento soubor se používá, zkopíruje se do cíle, ale neodstraní se ze zdroje.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Viz také

Platí pro