File.Move Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| Move(String, String) |
Перемещает указанный файл в новое расположение, предоставляя параметр для указания нового имени файла. |
| Move(String, String, Boolean) |
Перемещает указанный файл в новое расположение, предоставляя параметры для указания нового имени файла и замены целевого файла, если он уже существует. |
Move(String, String)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Перемещает указанный файл в новое расположение, предоставляя параметр для указания нового имени файла.
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)
Параметры
- sourceFileName
- String
Имя перемещаемого файла. Может включать относительный или абсолютный путь.
- destFileName
- String
Новый путь и имя файла.
Исключения
destFileName уже существует.
–или–
Произошла ошибка ввода-вывода, например при копировании файла в томах диска.
sourceFileName не найден.
sourceFileName или destFileName есть null.
Версии .NET Framework и .NET Core старше 2.1: sourceFileName или destFileName строка нулевой длины, содержит только пробелы или содержит недопустимые символы. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().
Вызывающий объект не имеет требуемого разрешения.
Указанный путь, имя файла или оба превышают определенную системой максимальную длину.
Путь, указанный в sourceFileName или destFileName недопустимый (например, на несопоставленном диске).
sourceFileName или destFileName находится в недопустимом формате.
Примеры
В следующем примере файл перемещается.
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
Комментарии
Этот метод работает в томах диска и не создает исключение, если источник и назначение совпадают.
Обратите внимание, что при попытке заменить файл, переместив файл с тем же именем в этот каталог, IOException создается исключение. Чтобы избежать этой проблемы, выполните указанные ниже действия.
В .NET Core 3.0 и более поздних версиях можно вызвать Move(String, String, Boolean) параметр
overwritetrue, который заменяет файл, если он существует.Во всех версиях .NET можно вызвать Copy(String, String, Boolean) копирование с перезаписью, а затем вызвать
Deleteудаление избыточного исходного файла. Эта стратегия не атомарна, так как системный или программный сбой во времяCopyможет оставить частично написанный целевой файл, но он гарантирует, что (возможно, неполный) файл всегда существует в назначении.Во всех версиях .NET можно вызывать Delete(String) перед вызовом
Move, что приведет только к удалению файла, если он существует.
destFileName Аргументы sourceFileName могут включать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Чтобы получить текущий рабочий каталог, см. GetCurrentDirectory.
Перемещение файла по томам диска эквивалентно копированию файла и его удалению из источника, если копирование выполнено успешно.
Если вы пытаетесь переместить файл по томам диска и этот файл используется, файл копируется в место назначения, но он не удаляется из источника.
Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.
См. также раздел
- Файловый и потоковый ввод-вывод
- чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
Move(String, String, Boolean)
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
- Исходный код:
- File.cs
Перемещает указанный файл в новое расположение, предоставляя параметры для указания нового имени файла и замены целевого файла, если он уже существует.
public:
static void Move(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite);
public static void Move(string sourceFileName, string destFileName, bool overwrite);
static member Move : string * string * bool -> unit
Public Shared Sub Move (sourceFileName As String, destFileName As String, overwrite As Boolean)
Параметры
- 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 находится в недопустимом формате.
Примеры
В следующем примере файл перемещается.
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
Комментарии
Этот метод работает в томах диска и не создает исключение, если источник и назначение совпадают.
destFileName Аргументы sourceFileName могут включать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Чтобы получить текущий рабочий каталог, см. GetCurrentDirectory.
Перемещение файла по томам диска эквивалентно копированию файла и его удалению из источника, если копирование выполнено успешно.
Если вы пытаетесь переместить файл по томам диска и этот файл используется, файл копируется в место назначения, но он не удаляется из источника.
Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.
См. также раздел
- Файловый и потоковый ввод-вывод
- чтение текста из файла
- Практическое руководство. Запись текста в файл