Я пытаюсь переместить файлы с a на b, но я получаю IOException с информацией: Access denied.Доступ к файлу запрещен во время перемещения файла
Я уверен, что это потому, что файл все еще открыт. Мой вопрос: как я могу проверить, используется ли файл или нет, и если он ждет, пока он не будет закрыт.
Исключение выбрано в вызове MoveTo()
в примере ниже.
public void CreateCheckedStructure() {
List<string> checkedDirNew = RemoveTempFolders(GetAllFromDir(Settings.Default.NewFolder));
List<string> checkedDirCurrent = RemoveTempFolders(GetAllFromDir(Settings.Default.CurrentFolder));
if (checkedDirNew.Count != 0 && checkedDirCurrent.Count != 0) {
MyLog.WriteToLog("Moving Checked Files", MyLog.Messages.Info);
foreach (string checkedNew in checkedDirNew) {
DirectoryInfo dirInfoNew = new DirectoryInfo(checkedNew);
foreach (string checkedCurrent in checkedDirCurrent) {
DirectoryInfo dirInfoCurrent = new DirectoryInfo(checkedCurrent);
if (dirInfoNew.Name.Equals(dirInfoCurrent.Name)) {
string checkedFoldersPath = Settings.Default.CheckedTables + "\\" + dirInfoCurrent.Name + "_" + DateTime.Now.ToString("hh-mm-ss");
Directory.CreateDirectory(checkedFoldersPath);
Directory.CreateDirectory(checkedFoldersPath + "\\New");
Directory.CreateDirectory(checkedFoldersPath + "\\Current");
dirInfoCurrent.MoveTo(checkedFoldersPath + "\\Current\\" + dirInfoNew.Name);
dirInfoNew.MoveTo(checkedFoldersPath + "\\New\\" + dirInfoCurrent.Name);
break;
}
}
}
MyLog.WriteToLog("All Checked Files have been moved", MyLog.Messages.Info);
} else { MyLog.WriteToLog("No Temporary Folder for Zips found",MyLog.Messages.Warning); }
}
В нашем приложении мы ловим исключение, подождать несколько секунд, попробуйте еще раз. если после попытки X раз, если все еще не удалось, то что-то пошло не так. Мы исключили исключение. – urlreader
Это именно то, для чего предназначена обработка исключений. Поместите блок try/catch (catch на 'IOException') вокруг неисправного кода и обработайте исключение, вернув сообщение или сделайте что-то еще, например, планируете повторить попытку позже или попросите пользователя попробовать позже. – Igor
ладно, это довольно четкий тень: D thx! – Ams1