.NET 4.x Глюки System.IO методы Move и MoveTo - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, а началось все с того, что метод FileInfo.Moveto в 15 процентах случаях не переносил файлы а копировал их. Узнал я это потому что у меня стоит ловушка, запрещающая переносить если такой файл уже существует. Разбирая свою программу, я грешил на что угодно и расчленил ее до нельзя, оставив только самые простые и базовые функции. В какой-то момент она стала периодически выдавать ошибку что невозможно выполнить MoveTo так как файл занят другим процессом. И подошел наконец к этому:
        private void button9_Click(object sender, EventArgs e)
        {
             lastPositionF1 = "E:/Gh";
           
           string filePathNN = massive2[stringMatchNumber].ToString();
                  
           string fu =  lastPositionF1 + "/" + System.IO.Path.GetFileName(filePathNN);
            label6.Text = stringMatchNumber.ToString();
            try
            {
                //filePathTargetF4Class.Delete();//к сожалению метод replace не работает
                //filePathSourceF4Class.MoveTo(lastPositionF4 + "\\" + filePathSourceF4Class.Name);//получаем позицию куда перенести и склеиваем с именем файла

                File.Move(filePathNN, fu);
 
                //  filSource.MoveTo(lastPositionNN + "\\" + System.IO.Path.GetFileName(filePathNN));//извелкаем название файла из пути
 
                //filSource.MoveTo(lastPositionNN + "\\" + System.IO.Path.GetFileName(filePathNN));
 
            }
 
            catch (Exception r)// System.IO.PathTooLongException)
            {
                MessageBox.Show(r.ToString() + " ---" + "filePathNN="+filePathNN+ "----", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return;
            }
            GetNextForCircle();
           // RefreshMain();
            //MainRegimeOfRandom();
           // InfoOurElementAfterRefresh();
            
           // fileRemoveToolStripMenuItem_Click(sender, e);
 
        }
Нажимаю на кнопку первый раз он легко переносит файл. Нажимаю кнопку второй раз он снова выбрасывает исключение. Хотя файл существует, не защищен, и свободно перемещается виндой. Я нажимаю еще несколько раз и Чудо, файл перенесся, методом GetNextForCircle() перехожу к следующему, нажимаю кнопку, и снова такая же беда, с четертой, пятой попытке файл снова перенесся и так все время. Я даже думал, что в первый запуск что-то не то, или с путями, но это исключение иногда срабатывала и на третий раз, а пути отладкой я проверил, все в порядке. Товарищи помогите, и давайте разберемся с этим System.IO, я проверю каждую вашу догадку, неужели в C# нельзя толком работать с файлами, я уже тут постил с методом Replace. На всякий случай я прикрепил картинку с MessageBox

Решение задачи: «.NET 4.x Глюки System.IO методы Move и MoveTo»

textual
Листинг программы
string fileTarget = "E:\\Target" + System.IO.Path.GetFileName(file);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы