Перемещение файлов в папку (C#)

Я хочу переместить файл, если он существует, в папку с датой, добавленной к файлу при перемещении. Я получаю сообщение об ошибке "Формат данного пути не поддерживается", хотя я преобразовал дату в строку, это внутри события, которое запускает этот код.

XAML:

<add key ="Directory" value ="C:\FILE WATCHER TEST FOLDER\"/>
<add key ="File name" value ="update1"/>
<add key="extension" value =".txt"/>
<add key ="Folder name" value ="archive updates\"/>

Code behind:

        DateTime date = DateTime.Parse("17/08/2012",ukCulture.DateTimeFormat);
        string theDate = Convert.ToString(date);

        string directory = ConfigurationManager.AppSettings["Directory"];
        string file = ConfigurationManager.AppSettings["File name"];
        string folder = ConfigurationManager.AppSettings["Folder name"];
        string extension = ConfigurationManager.AppSettings["extension"];

        string file_exe = file + extension;  

        string file_theDate = file + "-" + theDate;
        string file_theDate_exe = file_theDate + extension;

        string dir_fol = System.IO.Path.Combine(directory, folder);
        string dir_file_exe = System.IO.Path.Combine(directory, file_exe);
        string dir_file_theDate_exe = System.IO.Path.Combine(dir_fol, file_theDate_exe);

        if (File.Exists(dir_file_exe))
        {
            update.readNewFile();
            update.updatePaf();



            if (!Directory.Exists(dir_fol))
            {
                //create it move it
                System.IO.Directory.CreateDirectory(dir_fol);
                File.Move(dir_file_exe,dir_file_theDate_exe);


            }
            else
            {
                // move it
                if (File.Exists(dir_file_exe))
                {
                    File.Move(dir_file_exe, dir_file_theDate_exe);
                }

person Jed I    schedule 20.08.2012    source источник
comment
Что такое theDate? Вероятно, это формат даты, который несовместим с именем файла.   -  person Rawling    schedule 20.08.2012
comment
код неясен. сократите свой код до минимума и включите все константы (или записи конфигурации) для простого тестирования.   -  person Stephan Schinkel    schedule 20.08.2012
comment
Проверяйте значения переменных, отправляемых в ход - выкладывайте примеры сюда..   -  person BugFinder    schedule 20.08.2012
comment
убедитесь, что в новом имени файла нет зарезервированных символов.   -  person Default    schedule 20.08.2012


Ответы (2)


DateTime date = DateTime.Parse("17/08/2012",ukCulture.DateTimeFormat);

У вас не может быть косой черты на вашем пути.

Вы можете удалить их (вместе с другими недопустимыми символами) перед использованием пути, проверьте это, например: Как удалить недопустимые символы из пути и имен файлов?

person Gerald Versluis    schedule 20.08.2012
comment
Поскольку это DateTime, там тоже может быть : - person Emond Erno; 20.08.2012

Пожалуйста, используйте theDate.ToString({format as you need}) . Возможно, формат даты в вашей локали содержит «плохие» символы (косые черты).

Форматы можно найти по адресу http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

person Andrey Ivanov    schedule 20.08.2012