Файл перемещения C# с 2 подключенными дисками

Мне нужно переместить файл, существующий в сопоставленной папке с именем A:\ в другую сопоставленную папку B:\ используя код ниже

File.Move(@"A:\file.txt",@"B:\");

это возвращает ошибку ниже

Could not find file 'A:\file.txt'.

я пытался открыть A:\file.txt в проводнике папок, и он обычно открывает файл

2 ответа

Это выглядит как File.Move работает только для файлов на локальных дисках.

File.Move на самом деле вызывает MoveFile в котором говорится, что источник и пункт назначения должны быть:

Текущее имя файла или каталога на локальном компьютере.

Вы бы лучше, используя комбинацию File.Copy а также File.Delete,

Скопируйте файл из A в B затем удалите файл из A,

Как говорилось ранее, File.Move нужны sourceFileName и destFileName.
И вам не хватает имени файла во втором параметре.

Если вы хотите переместить свой файл и сохранить то же имя, вы можете извлечь имя файла из sourceFileName с помощью GetFileName и использовать его в вашем destFileName

string sourceFileName = @"V:\Nothing.txt";
string destPath   = @"T:\";
var fileName = Path.GetFileName(sourceFileName);

File.Move(sourceFileName, destPath + fileName );

Вот код отладки:

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.
            Console.WriteLine("The original file does not exists, let's Create it.");
            using (FileStream fs = File.Create(path)) {}
        }

        // Ensure that the target does not exist.
        if (File.Exists(path2)) {           
            Console.WriteLine("The target file already exists, let's Delete it.");
            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());
    }
}
Другие вопросы по тегам