Sdílet prostřednictvím


File.Move Metoda

Definice

Přetížení

Move(String, String)

Přesune zadaný soubor do nového umístění s 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

Přesune zadaný soubor do nového umístění s 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ý se má 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 V/V chybě, například při kopírování souboru mezi diskovými svazky.

sourceFileName nebyl nalezen.

sourceFileName nebo destFileName je null.

.NET Framework a .NET Core verze starší než 2.1: sourceFileName nebo destFileName je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Pomocí metody se můžete dotazovat 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 nenamapované jednotce).

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

Příklady

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

using namespace System;
using namespace System::IO;

int 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.
         FileStream^ fs = File::Create( path );
         if ( fs )
                  delete (IDisposable^)fs;
      }
      
      // 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 );
   }
}
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 diskových svazcích a nevyvolá výjimku, pokud jsou zdroj a cíl 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 příkaz . Chcete-li se vyhnout tomuto problému:

  • V .NET Core 3.0 a novějších verzích můžete volat Move(String, String, Boolean) nastavení parametru overwrite na truehodnotu , 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 volat Delete k odebrání nadbytečného zdrojového souboru. Tato strategie je vhodná, pokud je kopírovaný soubor malý a hledáte "atomic" operaci se souborem. Pokud soubor nejprve spustíte Delete a systém nebo program dojde k chybovému ukončení, cílový soubor už nebude existovat.

  • Ve všech verzích rozhraní .NET můžete volat Delete(String) před voláním Move, čímž odstraníte soubor pouze v případě, že existuje.

Argumenty sourceFileName a destFileName můžou obsahovat relativní nebo absolutní informace o cestě. Informace o relativní cestě jsou vykládány jako relativní k aktuálnímu pracovnímu adresáři. Informace o získání aktuálního pracovního adresáře najdete 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á, soubor se zkopíruje 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

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ý se má 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 V/V chybě, například při kopírování souboru mezi diskovými svazky.

sourceFileName nebyl nalezen.

sourceFileName nebo destFileName je null.

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

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

-nebo-

Operačnímu systému 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 nenamapované jednotce).

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

Příklady

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

using namespace System;
using namespace System::IO;

int 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.
         FileStream^ fs = File::Create( path );
         if ( fs )
                  delete (IDisposable^)fs;
      }
      
      // 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 );
   }
}
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 diskových svazcích a nevyvolá výjimku, pokud jsou zdroj a cíl stejné.

Argumenty sourceFileName a destFileName můžou obsahovat relativní nebo absolutní informace o cestě. Informace o relativní cestě jsou vykládány jako relativní k aktuálnímu pracovnímu adresáři. Informace o získání aktuálního pracovního adresáře najdete 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á, soubor se zkopíruje 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