Файл перемещения 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());
}
}