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


Автор: PsyNejumi303 25.3.2006, 13:57
помогите. папка создается в которую должно быть перемещено, а когда дело доходит до MoveTo то мне выдает "Невозможно создать файл, так как он уже существует." хотя файла там такого еще нет.
Код

            DirectoryInfo dir = new DirectoryInfo(textBox2.Text);
            DirectoryInfo[] subdir = dir.GetDirectories();
            for (int i = 0; i < subdir.Length; i++)
            {
                Directory.CreateDirectory("c:/test/" + a + "/" + b);
                subdir[i].MoveTo("c:/test/" + a + "/" + b); // вот на эту строчку ругается:(
            }

Автор: ivashkanet 25.3.2006, 14:21
PsyNejumi303, команда
Код

subdir[i].MoveTo("c:/test/" + a + "/" + b);

перемещает папку subdir[i] не внуть папуки "c:/test/" + a + "/" + b, а именно на её место (те переименовывает её в "c:/test/" + a + "/" + b).

Поэтому код должен быть такой:
Код

            DirectoryInfo dir = new DirectoryInfo(textBox2.Text);    
            DirectoryInfo[] subdir = dir.GetDirectories();    
            for (int i = 0; i < subdir.Length; i++)    
            {    
                Directory.CreateDirectory("c:/test/" + a + "/" + b);
                subdir[i].MoveTo("c:/test/" + a + "/" + b +subdir[i].Name); // вот на эту строчку уже не ругается:(    
            }


P.S. Некоторые замечания:
1) Папка Directory.CreateDirectory("c:/test/" + a + "/" + b) создаеться однажды, зачем ее создавать внутри цикла smile (Странно, что программа не ругаеться)
2) C коллекцией (массивом) лучше работать в таких случаях через foreach:
Код

            DirectoryInfo dir = new DirectoryInfo(textBox2.Text);
            Directory.CreateDirectory("c:/test/" + a + "/" + b);
            foreach (DirectoryInfo SubDir in dir.GetDirectories())
            {
                SubDir.MoveTo("c:/test/" + a + "/" + b + SubDir.Name);    
            }


Удачи! smile

Автор: PsyNejumi303 25.3.2006, 14:37
ivashkanet, a и b меняются в цикле. поэтому и создается папка в цикле. просто не стал писать другую большую ненужную часть кода где идет вычисление a и b
пасиба бальшое. все пашет))

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