File.Move Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Move(String, String) |
Перемещает заданный файл в новое местоположение и разрешает переименование файла. |
Move(String, String, Boolean) |
Перемещает указанный файл в новое расположение, предоставляя параметры для указания нового имени файла и замены целевого файла, если он уже существует. |
Move(String, String)
Перемещает заданный файл в новое местоположение и разрешает переименование файла.
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 namespace System;
using namespace System::IO;
int 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.
FileStream^ fs = File::Create( path );
if ( fs )
delete (IDisposable^)fs;
}
// 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 );
}
}
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) задав параметру
overwrite
значениеtrue
, который заменит файл, если он существует.Во всех версиях .NET можно вызвать метод Copy(String, String, Boolean) копирования с перезаписью, а затем вызвать ,
Delete
чтобы удалить лишний исходный файл. Эта стратегия рекомендуется, если копируемый файл имеет небольшой размер и вы ищете атомарную операцию с файлом. Если сначала вы используетеDelete
файл и система или программа завершатся сбоем, целевой файл больше не будет существовать.Во всех версиях .NET можно вызвать Delete(String) перед вызовом
Move
, который удалит файл, только если он существует.
Аргументы sourceFileName
и destFileName
могут содержать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.
Перемещение файла между томами диска эквивалентно копированию файла и его удалению из источника, если копирование прошло успешно.
Если вы попытаетесь переместить файл между томами диска и этот файл используется, файл копируется в место назначения, но не удаляется из источника.
Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.
См. также раздел
- Файловый и потоковый ввод-вывод
- Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
Move(String, String, Boolean)
Перемещает указанный файл в новое расположение, предоставляя параметры для указания нового имени файла и замены целевого файла, если он уже существует.
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 namespace System;
using namespace System::IO;
int 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.
FileStream^ fs = File::Create( path );
if ( fs )
delete (IDisposable^)fs;
}
// 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 );
}
}
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
Комментарии
Этот метод работает на разных томах диска и не создает исключение, если источник и назначение совпадают.
Аргументы sourceFileName
и destFileName
могут содержать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.
Перемещение файла между томами диска эквивалентно копированию файла и его удалению из источника, если копирование прошло успешно.
Если вы попытаетесь переместить файл между томами диска и этот файл используется, файл копируется в место назначения, но не удаляется из источника.
Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.
См. также раздел
- Файловый и потоковый ввод-вывод
- Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по