Пример #1
0
        //метод перемещает указанный файл в назначенное место
        private void MoveTo(string sourceFilePath, string newFilePath)
        {
            //максимальное количество попыток обращения к файлу
            const int maxNumberFailure = 50;

            //флаг для определения свободен ли файл от других процессов
            bool fileLocked = true;

            //счетчик неудачных попыток получить доступ к файлу
            int failureСounter = 0;

            //пока файл занят
            while (fileLocked)
            {
                try
                {
                    //если файл уже существует в  назначенной папке, то удаляем его
                    if (File.Exists(newFilePath))
                    {
                        File.Delete(newFilePath);
                    }

                    //если файл который необходимо переместить существует
                    if (File.Exists(sourceFilePath))
                    {
                        File.Move(sourceFilePath, newFilePath);

                        //получаем имя файла и записываем в журнал, что файл был перемещен
                        string fileName = Path.GetFileNameWithoutExtension(sourceFilePath);
                        loger.PrintFileMoved(fileName, newFilePath);
                    }

                    fileLocked = false;
                }
                catch (IOException ex)
                {
                    failureСounter++;

                    if (failureСounter == maxNumberFailure)
                    {
                        loger.PrintError(ex.Message);
                        fileLocked = false;
                    }
                }
            }
        }