Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 01:50   #11
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

Еще тут поклацал. Оказывается виноват вовсе не 7. Я архивировал файлы icq. Она в это время у меня была запущена. Она не дает доступа к этой папке которую я пытался архивировать. Как теперь заархивировать не понимаю. Есть только одна мысль - закрыть аську как то..
Vistar вне форума Ответить с цитированием
Старый 09.12.2009, 11:39   #12
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Попробуй скопировать файлы в временный каталог. Напиши результат. Если получится, то копируй файлы и архивируй их.
Hollander вне форума Ответить с цитированием
Старый 11.01.2010, 22:29   #13
Vistar
учащийся
Форумчанин
 
Аватар для Vistar
 
Регистрация: 26.04.2009
Сообщений: 144
По умолчанию

В общем написал вот такие функции для копирования папки

Код:
        // Копирует папку
        public static void copyFolder(string sourceFolder, string destFolder)
        {
            int copyFolder_n = 0;
            // Создаем папку в которую будет все копироваться
            Directory.CreateDirectory(destFolder);

            // Список папок в текущей папке
            string[] folders = Directory.GetDirectories(sourceFolder);

            // Список имен папок в текущей папке
            string[] folderNames = returnNames(folders);

            // Получаем список файлов в папке, которую нужно скопировать
            string[] files = Directory.GetFiles(sourceFolder);

            // Копируем все файлы в destFolder
            copyFiles(files, destFolder);

            // Перебираем все папки с sourceFolder и вызываем эту же функцию 
            // для копирования содержимого каждой папки
            foreach (string i in folders)
            {
                copyFolder(i, destFolder + "\\" + folderNames[copyFolder_n]);
                copyFolder_n++;
            }
        }

        // Получаем список файлов (files) и копируем их в указанную папку (destFolder)
        public static void copyFiles(string[] files, string destFolder)
        {
            // Имена переданных файлов, без адреса к файлу
            string[] fileNames = returnNames(files);

            // Для генерирования адреса нового файла
            int n = 0;

            // Копируем каждый с переданных файлов
            foreach (string i in files)
            {
                File.Copy(i, destFolder + "\\" + fileNames[n], true);
                n++;
            }
        }


        // Возвращает имена файлов или папок, без адреса к ним
        // Имя файла также включает его расширение
        public static string[] returnNames(string[] files)
        {
            // Создаем массив для имен файлов или папок с таким
            // же количеством элементов как и в files
            string[] fileNames = new string[files.Length];

            // Используется для генерирования имени
            int n = 0; ;

            // Перебираем каждый файл, вырезаем имя файла и сохраняем в массив для имен
            foreach (string i in files)
            {
                fileNames[n] = i.Substring(i.LastIndexOf("\\") + 1, i.Length - i.LastIndexOf("\\") - 1);
                n++;
            }
            return fileNames;
        }
Потом вызываю функцию копирования папки
Код:
Files.copyFolder(@"C:\Users\SliRx\AppData\Roaming\ICQ", @"D:\\icqfolder");
Когда ICQ закрыта то все нормально копируется.
При запущенной ICQ пишет ошибку "The process cannot access the file 'C:\Users\SliRx\AppData\Roaming\ICQ \Application.mdb' because it is being used by another process." и указывает на строку
Код:
File.Copy(i, destFolder + "\\" + fileNames[n], true);
в функции copyFiles.
Vistar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архивация БД dron-s БД в Delphi 0 10.03.2008 12:08
Архивация в программе FaTaL Общие вопросы Delphi 13 04.03.2008 19:37
Архивация Mitron Общие вопросы Delphi 10 14.02.2008 16:00
Архивация данных ZYRGiX Win Api 6 05.09.2007 20:58