File.Move(String, String) Methode

Definitie

Hiermee verplaatst u een opgegeven bestand naar een nieuwe locatie, met de optie om een nieuwe bestandsnaam op te geven.

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)

Parameters

sourceFileName
String

De naam van het te verplaatsen bestand. Kan een relatief of absoluut pad bevatten.

destFileName
String

Het nieuwe pad en de naam voor het bestand.

Uitzonderingen

destFileName bestaat al.

– of –

Er is een I/O-fout opgetreden, bijvoorbeeld tijdens het kopiëren van het bestand tussen schijfvolumes.

sourceFileName is niet gevonden.

sourceFileName of destFileName is null.

.NET Framework en .NET Core-versies ouder dan 2.1: sourceFileName of destFileName is een tekenreeks met lengte nul, bevat alleen witruimte of ongeldige tekens. U kunt een query uitvoeren op ongeldige tekens met behulp van de GetInvalidPathChars() methode.

De beller heeft niet de vereiste machtiging.

Het opgegeven pad, de bestandsnaam of beide overschrijden de door het systeem gedefinieerde maximumlengte.

Het pad dat is opgegeven in sourceFileName of destFileName is ongeldig (bijvoorbeeld op een niet-toegewezen station).

sourceFileName of destFileName heeft een ongeldige indeling.

Voorbeelden

In het volgende voorbeeld wordt een bestand verplaatst.

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

Opmerkingen

Deze methode werkt tussen schijfvolumes en genereert geen uitzondering als de bron en het doel hetzelfde zijn.

Als u een bestand probeert te vervangen door een bestand met dezelfde naam naar die map te verplaatsen, wordt er een IOException gegenereerd. Ga als volgt te werk om dit probleem te voorkomen:

  • In .NET Core 3.0 en latere versies kunt u Move(String, String, Boolean) de parameter overwrite instellen op true, waardoor het bestand wordt vervangen als het bestaat.

  • In alle .NET versies kunt u Copy(String, String, Boolean) aanroepen om te kopiëren met overschrijven en vervolgens Delete aanroepen om het overtollige bronbestand te verwijderen. Deze strategie is niet atomisch, omdat een systeem- of programmacrash tijdens het Copy systeem of programma mogelijk een gedeeltelijk geschreven doelbestand verlaat, maar het zorgt ervoor dat er altijd een (mogelijk onvolledig) bestand bestaat op de bestemming.

  • In alle .NET versies kunt u Delete(String) aanroepen voordat u Move aanroept, waardoor het bestand alleen wordt verwijderd als het bestaat.

De sourceFileName argumenten destFileName kunnen relatieve of absolute padinformatie bevatten. Relatieve padinformatie wordt geïnterpreteerd als relatief ten opzichte van de huidige werkmap. Als u de huidige werkmap wilt ophalen, raadpleegt GetCurrentDirectoryu .

Het verplaatsen van het bestand over schijfvolumes komt overeen met het kopiëren van het bestand en het verwijderen uit de bron als het kopiëren is geslaagd.

Als u probeert een bestand te verplaatsen tussen schijfvolumes en dat bestand in gebruik is, wordt het bestand gekopieerd naar de bestemming, maar wordt het niet verwijderd uit de bron.

Zie Algemene I/O-taken voor een lijst met algemene I/O-taken.

Van toepassing op

Zie ook