File.Move(String, String) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
overwriteinstellen optrue, 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
Deleteaanroepen om het overtollige bronbestand te verwijderen. Deze strategie is niet atomisch, omdat een systeem- of programmacrash tijdens hetCopysysteem 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
Moveaanroept, 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.