Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Функция File.Move(f1, f2)


Автор: Uvs 30.6.2014, 12:15
Добрый день. Не работает функция File.Move(f1, f2). В директориях файлов есть русские символы и пробелы. Для корректной обработки - заключаю пути файлов в двойные кавычки.


    try
      {
        string[] dbfFiles = Directory.GetFiles(Path.GetDirectoryName(fileName), "*.dbf");
        foreach (string dbf_file in dbfFiles)
        {
          string clearFName = Path.GetFileName(dbf_file);
          if (dict.ContainsKey(clearFName)) dict[clearFName]++;
          else dict.Add(clearFName, 1);

          string file_dest = destFolder + "\\" + clearFName.Substring(0, 3) + "_" + dict[clearFName].ToString() + ".dbf";
          File.Move(String.Format("\"{0}\"", file_src), String.Format("\"{0}\"", file_dest));
        }
      }
      catch (ArgumentNullException nullExcept) { throw new ArgumentNullException(nullExcept.Message); }
      catch (ArgumentException argExcept) { throw new ArgumentException(argExcept.Message); }
      catch (UnauthorizedAccessException unAccess) { throw new UnauthorizedAccessException(unAccess.Message); }
      catch (PathTooLongException tolongException) { throw new PathTooLongException(tolongException.Message); }
      catch (DirectoryNotFoundException notFoundException) 
{ throw new DirectoryNotFoundException(notFoundException.Message); }
      catch (NotSupportedException notSupException) { throw new NotSupportedException(notSupException.Message); }
      catch (IOException ioExcept) { throw new IOException(ioExcept.Message); }


В чем тут дело? Пользователю, запускающему программу дал полные права.

Автор: Uvs 30.6.2014, 12:35
не происходит никакого Exception и кода ошибки не выдается

Автор: mihryak 30.6.2014, 14:07
1. Ковычки не нужны
2. Для склейки частей пути используй Path.Combine
3. Для получения имени файла без расширения используй Path.GetFileNameWithoutExtension
4. Что такое file_src? Почему не меняется в цикле? Ты хочешь один и тот же файл размножить?
5. Никогда не видел такой бессмысленной обработки исключений - вместо того, что ты делайешь сейчас, гораздо уместней было бы вообще ничего не ловить
6. Используй подсветку синтаксиса для вставки кода в сообщение

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)