Получение исключения как "Параметр неверен.\ R \n" при перемещении файла

Я написал код для перемещения файла следующим образом

            private void Move_Click(object sender, EventArgs e)
    {
        string strOrgpath = string.Empty, strNewpath = string.Empty;
        strOrgpath = tvwACH.SelectedNode.ToString();
        string strPath = strOrgpath.Substring(10);
        FolderBrowserDialog folderborwser1 = new FolderBrowserDialog();

       if (folderborwser1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                strNewpath = folderborwser1.SelectedPath;
                File.Move(strPath, strNewpath);
            }
            catch (Exception ex)
            {

            }
        }

    }

Но я получаю исключение, как я уже говорил, любой может сказать, почему, и иногда я получаю ошибку, поскольку доступ к пути запрещен

3 ответа

Решение

Убедитесь, что ваш вызов подстроки возвращает правильный результат. Если возможно, используйте статические методы из Path класс вместо. Взгляните на страницу MSDN для File.Move и обратите внимание на ожидаемые параметры - вы должны предоставить два действительных полных имени файла (например, C:\Blah\myFile.txt).

Сообщение об ошибке "Отказано в доступе" может появиться, если пользователь выберет папку, к которой у него нет прав записи, в диалоговом окне браузера папок. Это сценарий, который вы должны обработать в своем коде, возможно, поймав UnauthorizedAccessException,

Обновление: файл назначения также должен указывать на имя файла. Так что вам нужно сделать что-то вроде этого:

var origFileName = Path.GetFileName(strPath);
strNewpath = Path.Combine(folderborwser1.SelectedPath, origFileName);
File.Move(strPath, strNewpath);

Я не догадываюсь о значениях, которые используются в вашем приложении во время выполнения. tvwACH.SelecteNode.ToString() или же strOrgpath.Substring(10) не является допустимым путем к файловой системе.

Вы должны отладить ваше приложение и установить точку останова, чтобы увидеть, что это за значения (и опубликовать их, если неясно, в чем заключается ваша проблема на тот момент).

Была такая же ошибка, потому что я пытался использовать один из этих символов в имени файла по пути назначения '\/: *? " < > | '.

Другие вопросы по тегам