Looking for .net Keywords? Try Ask4Keywords

.NET Framework Перемещение файла из одного места в другое


пример

File.Move

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

File.Move(@"C:\TemporaryFile.txt", @"C:\TemporaryFiles\TemporaryFile.txt");

Тем не менее, есть много вещей, которые могут пойти не так с этой простой операцией. Например, что, если у пользователя, запускающего вашу программу, нет Диска с меткой «C»? Что делать, если они это сделали, но решили переименовать его в «B» или «M»?

Что делать, если исходный файл (файл, в который вы хотите переместить) был перемещен без вашего ведома - или что, если он просто не существует.

Это можно обойти, предварительно проверив, существует ли исходный файл:

string source = @"C:\TemporaryFile.txt", destination = @"C:\TemporaryFiles\TemporaryFile.txt";
if(File.Exists("C:\TemporaryFile.txt"))
{
    File.Move(source, destination);
}

Это гарантирует, что в этот момент файл действительно существует и может быть перемещен в другое место. Бывают случаи, когда простого вызова File.Exists будет недостаточно. Если это не так, проверьте еще раз, передайте пользователю, что операция завершилась неудачно - или обработайте исключение.

Исключение FileNotFoundException - это не единственное исключение, с которым вы, вероятно, столкнетесь.

Ниже приведены возможные исключения:

Тип исключения Описание
IOException Файл уже существует или исходный файл не найден.
ArgumentNullException Значение параметров Source и / или Destination равно null.
ArgumentException Значение параметров Source и / или Destination пусто или содержит недопустимые символы.
UnauthorizedAccessException У вас нет необходимых разрешений для выполнения этого действия.
PathTooLongException Исходный, целевой или заданный путь (ы) превышают максимальную длину. В Windows длина пути должна быть меньше 248 символов, а имена файлов должны быть менее 260 символов.
DirectoryNotFoundException Указанный каталог не найден.
NotSupportedException Пути источника или назначения или имена файлов находятся в недопустимом формате.