Прочитать на английском

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


File.Move Метод

Определение

Перегрузки

Move(String, String)

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

Move(String, String, Boolean)

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

Move(String, String)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

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

C#
public static void Move (string sourceFileName, string destFileName);

Параметры

sourceFileName
String

Имя перемещаемого файла. Может содержать относительный или абсолютный путь.

destFileName
String

Новый путь к файлу и его имя.

Исключения

destFileName уже существует.

-или-

Произошла ошибка ввода-вывода, например при копировании файла в томах диска.

Не удалось найти sourceFileName.

Параметр sourceFileName или destFileName имеет значение null.

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

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

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

В sourceFileName или destFileName указан недопустимый путь (например, он ведет на несопоставленный диск).

Параметр sourceFileName или destFileName имеет недопустимый формат.

Примеры

В следующем примере файл перемещается.

C#
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());
        }
    }
}

Комментарии

Этот метод работает в разных томах диска и не создает исключение, если источник и назначение совпадают.

Обратите внимание, что при попытке заменить файл путем перемещения файла с тем же именем в этот каталог IOException создается исключение . Чтобы избежать этой проблемы, сделайте следующее:

  • В .NET Core 3.0 и более поздних версиях можно вызвать Move(String, String, Boolean) параметр overwritetrue, который заменит файл, если он существует.

  • Во всех версиях .NET можно вызвать Copy(String, String, Boolean) метод копирования с перезаписью, а затем вызвать , Delete чтобы удалить лишний исходный файл. Эта стратегия рекомендуется, если копируемый файл имеет небольшой размер и вы ищете операцию с "атомарным" файлом. Если сначала вы Delete используете файл, а система или программа завершатся сбоем, целевой файл больше не будет существовать.

  • Во всех версиях .NET можно вызывать Delete(String) перед вызовом Move, что приведет к удалению файла, только если он существует.

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

Перемещение файла между томами диска эквивалентно копированию файла и его удалению из источника, если копирование прошло успешно.

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Move(String, String, Boolean)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

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

C#
public static void Move (string sourceFileName, string destFileName, bool overwrite);

Параметры

sourceFileName
String

Имя перемещаемого файла. Может содержать относительный или абсолютный путь.

destFileName
String

Новый путь к файлу и его имя.

overwrite
Boolean

true , чтобы заменить целевой файл, если он уже существует; false Иначе.

Исключения

Имя, заданное в параметре destFileName, уже существует, а параметр overwrite имеет значение false.

-или-

Произошла ошибка ввода-вывода, например при копировании файла в томах диска.

Не удалось найти sourceFileName.

Параметр sourceFileName или destFileName имеет значение null.

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

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

-или-

Операционной системе не удалось получить монопольный доступ к целевому файлу.

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

В sourceFileName или destFileName указан недопустимый путь (например, он ведет на несопоставленный диск).

Параметр sourceFileName или destFileName имеет недопустимый формат.

Примеры

В следующем примере файл перемещается.

C#
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());
        }
    }
}

Комментарии

Этот метод работает в разных томах диска и не создает исключение, если источник и назначение совпадают.

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

Перемещение файла между томами диска эквивалентно копированию файла и его удалению из источника, если копирование прошло успешно.

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9