В моем нижнем коде я пытаюсь переместить все мои файлы .doc
, расположенные в одной папке, в другую. В производстве это будет перемещение файлов, сгенерированных в созданную папку C:\Temp\
, в сетевую папку с заданием базы данных, которое каждые 5 минут перемещает файлы из сетевой папки в наш документ, представляя систему архивации.Directory.Move(): процесс не может получить доступ к файлу, потому что он используется другим процессом?
При попытке мой код, приведенный ниже тест, я получаю "The process cannot access the file because it is being used by another process."
КОД:
public void moveLocalToCommitFYI()
{
// MOVE DOCS FORM TEMP FOLDER TO COMMITFYI FOLDER
string dirSource = @"C:\Users\NAME\Desktop\CommitTest\MoveTest\";
string dirDest = @"C:\Users\NAME\Desktop\CommitTest\MoveTest\DestTest\";
try
{
Directory.Move(dirSource, dirDest);
}
catch (Exception ex)
{
MessageBox.Show("Source:\t" + ex.Source + "\nMessage: \t" + ex.Message + "\nData:\t" + ex.Data);
}
}
То, что кажется мне странным, что когда я указываю один исходный файл напрямую, и это назначение, функции кода штраф:
public void moveLocalToCommitFYI()
{
// MOVE DOCS FORM TEMP FOLDER TO COMMITFYI FOLDER
string dirSource = @"C:\Users\NAME\Desktop\CommitTest\MoveTestFile.doc";
string dirDest = @"C:\Users\NAME\Desktop\CommitTest\MoveTest\MoveTestFile.doc";
try
{
Directory.Move(dirSource, dirDest);
}
catch (Exception ex)
{
MessageBox.Show("Source:\t" + ex.Source + "\nMessage: \t" + ex.Message + "\nData:\t" + ex.Data);
}
}
Конечно, есть способ, чтобы переместить все мои .doc
файлов из одного каталога в другой, без необходимости прокручивать и указывать каждое отдельное имя файла?
EDIT:
Сделано изменение наличия моя папка назначения будет другая папка на рабочем столе, а не в подпапке. dirSource содержали 5 текстовые документы и каталог назначения (\ MoveTest \ на моем рабочем столе) не содержит никаких файлов:
string dirSource = @"C:\Users\NAME\Desktop\CommitTest\MoveTest\";
string dirDest = @"C:\Users\NAME\Desktop\MoveTest\";
Это сгенерированные "Cannot create a file when that file already exists"
.
Исходя из этого, я предположил, что код на самом деле ПЕРЕЕЗД папку набор каталогов и все его содержимое из одного места в другое, поэтому я изменил свой код на следующее:
string dirSource = @"C:\Users\NAME\Desktop\CommitTest\MoveTest\";
string dirDest = @"C:\Users\NAME\Desktop\MoveTest2\";
Это избавилась моя подпапка \ MoveTest \ in \ Desktop \ CommitTest \ и созданная папка \ Рабочий стол \ MoveTest2.
Есть ли способ перемещать содержимое папки, не избавляясь от исходной папки и помещая ее в уже созданную цель?
Это сделало. Спасибо Тиму! –