Поделиться через


Directory.Move(String, String) Метод

Определение

Перемещает файл или каталог со всем его содержимым в новое местоположение.

public:
 static void Move(System::String ^ sourceDirName, System::String ^ destDirName);
public static void Move (string sourceDirName, string destDirName);
static member Move : string * string -> unit
Public Shared Sub Move (sourceDirName As String, destDirName As String)

Параметры

sourceDirName
String

Путь к файлу или каталогу, который необходимо переместить.

destDirName
String

Путь к новому расположению для sourceDirName или его содержимое. Если sourceDirName является файлом, то параметр destDirName также должен быть именем файла.

Исключения

Была предпринята попытка переместить каталог в другой том.

-или-

destDirName уже существует. См. примечание в разделе Примечания.

-или-

Параметры sourceDirName и destDirName указывают на один и тот же файл или каталог.

-или-

Каталог или находящийся в нем файл используется другим процессом.

У вызывающего объекта отсутствует необходимое разрешение.

платформа .NET Framework и .NET Core версий старше 2.1: sourceDirName или destDirName представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

Параметр sourceDirName или destDirName имеет значение null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

Путь, указанный sourceDirName, является недопустимым (например, он ведет на несопоставленный диск).

Примеры

В следующем примере показано, как переместить каталог и все его файлы в новый каталог. Исходный каталог больше не существует после его перемещения.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\source";
            string destinationDirectory = @"C:\destination";

            try
            {
                Directory.Move(sourceDirectory, destinationDirectory);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\source"
let destinationDirectory = @"C:\destination"

try
    Directory.Move(sourceDirectory, destinationDirectory)
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\source"
        Dim destinationDirectory As String = "C:\destination"

        Try
            Directory.Move(sourceDirectory, destinationDirectory)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

Комментарии

Этот метод создает новый каталог с именем, указанным в параметре destDirName , и перемещает содержимое sourceDirName, включая файлы и каталоги, в только что созданный целевой каталог. Затем каталог удаляется sourceDirName .

При попытке переместить каталог в каталог, который уже существует, IOException возникнет исключение .

Аргументы sourceDirName и destDirName могут указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Конечные пробелы удаляются из конца параметров пути перед перемещением каталога.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

Примечание

Начиная с .NET Core 3.0, Move метод вызывает на IOException всех платформах, если destDirName уже существует. В .NET Core 2.2 и предыдущих версиях исключение было вызвано только в Windows, а другие платформы могли либо завершиться сбоем destDirName, либо перезаписать . См. раздел Переименование C++.

Применяется к

См. также раздел