File.Move(String, String) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Flyttar en angiven fil till en ny plats, vilket ger möjlighet att ange ett nytt filnamn.
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)
Parametrar
- sourceFileName
- String
Namnet på filen som ska flyttas. Kan innehålla en relativ eller absolut sökväg.
- destFileName
- String
Den nya sökvägen och namnet på filen.
Undantag
destFileName redan finns.
-eller-
Ett I/O-fel har uppstått, t.ex. när filen kopierades mellan diskvolymer.
sourceFileName hittades inte.
sourceFileName eller destFileName är null.
.NET Framework- och .NET Core-versioner som är äldre än 2.1: sourceFileName eller destFileName är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .
Anroparen har inte den behörighet som krävs.
Den angivna sökvägen, filnamnet eller båda överskrider den systemdefinierade maximala längden.
Sökvägen som anges i sourceFileName eller destFileName är ogiltig (till exempel på en ommappad enhet).
sourceFileName eller destFileName är i ett ogiltigt format.
Exempel
I följande exempel flyttas en fil.
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
Kommentarer
Den här metoden fungerar mellan diskvolymer och genererar inget undantag om källan och målet är samma.
Observera att om du försöker ersätta en fil genom att flytta en fil med samma namn till katalogen genereras en IOException . Undvik det här problemet:
I .NET Core 3.0 och senare versioner kan du anropa Move(String, String, Boolean) ställa in parametern
overwritetilltrue, vilket ersätter filen om den finns.I alla .NET versioner kan du anropa Copy(String, String, Boolean) för att kopiera med överskrivning och sedan anropa
Deleteför att ta bort den överflödiga källfilen. Den här strategin är inte atomisk eftersom en system- eller programkrasch underCopykan lämna en delvis skriven målfil, men den säkerställer att en (eventuellt ofullständig) fil alltid finns på målet.I alla .NET versioner kan du anropa Delete(String) innan du anropar
Move, vilket endast tar bort filen om den finns.
Argumenten sourceFileName och destFileName kan innehålla relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Information om hur du hämtar den aktuella arbetskatalogen finns i GetCurrentDirectory.
Att flytta filen mellan diskvolymer motsvarar att kopiera filen och ta bort den från källan om kopieringen lyckades.
Om du försöker flytta en fil mellan diskvolymer och filen används kopieras filen till målet, men den tas inte bort från källan.
En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.