Преместване на файлове в папка (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