Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Yukimir
0 / 0 / 0
Регистрация: 26.08.2009
Сообщений: 11
#1

Нужна помощь в создании/удалении директорий. - C++

26.08.2009, 13:31. Просмотров 1611. Ответов 8
Метки нет (Все метки)

Есть потребность в рабочей папке создать временную директорию, а по завершении всех необходимых работ удалить ее. В виду того что изучением языка я занимаюсь всего второй месяц такая простоя задача поставила меня в тупик. Помогите кто сможет.

Вот на чем я пока застрял:

C++
1
2
3
4
5
6
7
    string tmp_direct;
    int k = 0;
    do
    {
        tmp_direct = put_isx + "\\TEMP"+ toString(k++) +"\\";
    }
    while(CreateDirectory((LPCWSTR)tmp_direct.c_str(), NULL) == 0);
Переменная put_isx типа string, функция toString(int k) самописная, преобразует целое число в string.

Первая проблема возникла в том что процедура CreateDirectory() наотрез отказалась принимать переменную типа string, путем нескольких махинаций мне удалось заставить компилятор скомпилировать это чудо, но в итоге каталог не создается и из цикла программа не выходит.

P.S. Имя каталога специально сделал переменным, это для того что бы в последствии программу можно было перевести в многопоточный режим. Я хотел для каждого потока выделить свой каталог в котором программа будет обрабатывать файлы.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2009, 13:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужна помощь в создании/удалении директорий. (C++):

нужна помощь в создании процедуры на С++ - C++
нужна помощь в создании процедуры. задание звучит так: написать процедуру вычисления интерполяционного полинома в форме Лагранжа, Эйткина,...

Помощь в создании массива на c++ - C++
Прошу помощи в задании, заранее спасибо. Даны вещественные массивы n от 20,определить для каждого массива является ли он возрастающей...

Проблема с рандомом + помощь в создании алгоритма - C++
Такая штука - делаю одну прогу (игра напоминающая бомбермен)... Решил отдельнонаписать прожку в которой юзер начинает матч - боты сами...

Нужна помощь Строки. - C++
Составить программу вывода последовательности символов ZYYXXX...AA..AA Y на экран.

Нужна помощь в исправлении - C++
эта программа расчитывает значения отрезка интегрирования (x1, x2) один для всех трех интегралов, помогите сделать так, чтобы нужно было...

Нужна помощь с циклами - C++
Помогите, пожалуйста, нету никаких идей. Пользователь вводит число. Показать сколько в данном числе чисел и сумму этих чисел. Нужно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
26.08.2009, 13:55 #2
CreateDirectory((LPCWSTR)tmp_direct.c_str(), NULL)
CreateDirectoryA(tmp_direct.c_str(), NULL)
1
Yukimir
0 / 0 / 0
Регистрация: 26.08.2009
Сообщений: 11
26.08.2009, 14:53  [ТС] #3
Спасибо! Помогло. В следующий раз буду внимательней изучать библиотеки.

А если не сложно то можно написать команду удаления директории? Удаление файла я нашел в той же библиотеке а вот про директорию пока не нашел.
0
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
26.08.2009, 14:58 #4
Yukimir,
папка - это тоже файл(без разширения).
0
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
26.08.2009, 14:58 #5
А если не сложно то можно написать команду удаления директории? Удаление файла я нашел в той же библиотеке а вот про директорию пока не нашел.
Если директория пустая - то _rmdir (C) / RemoveDirectory (WinAPI)
если не пустая, то либо рекурсивно в цикле удалять файлы/директории до достижения пустоты, либо SHFileOperation с wFunc = FO_DELETE
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.08.2009, 20:58 #6
папка - это тоже файл(без разширения).
Ничего подобного - это файл специального вида !
У каталога вполне может быть расширение.
Для удаления пустого каталога есть отдельная функция - rmdir().
2
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
27.08.2009, 03:37 #7
odip,
Цитата Сообщение от odip Посмотреть сообщение
Ничего подобного - это файл специального вида !
Переименовывать как файл, но без разширения - возможно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <direct.h>        //int mkdir( const char *dirname );
 
using namespace std;
 
int main()//==============================================================
{
char dn[5] = "TEMP";
char dni[16];
char N[32];
 
    for( size_t i = 1; i < 7; i++)
    {
        strcpy( dni, dn );
         itoa( i, N, 10 );
         strcat( dni, N );
        //-----------------------------
        if( mkdir( dni ) == 0 )
        {              
            cout << "Directory " << dni << " easy created." << endl << endl;
            system( "pause" );//--------------------------------------------
            if( rmdir( dni ) == 0 )
                cout << "Directory " << dni << " was easy removed.";
            else
                cout << "Nnnnd\aaaaaaaa... no removing directory... ";
            cout << endl << endl;
        }
        else//--------------------------------------------------------------
        {
            cout << "Nnnnd\aaaaaaaa... no creating directory... " << dni;
            cout << endl << endl; 
        }
        system( "pause" );
    }        
 
system( "pause" );
return EXIT_SUCCESS;
}//=======================================================================
Цитата Сообщение от odip Посмотреть сообщение
Для удаления пустого каталога есть отдельная функция - rmdir()
А для непустого, какая?
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.08.2009, 21:12 #8
Переименовывать как файл, но без разширения - возможно?
не понял
А для непустого, какая?
Rififi в посте #5 ответил уже.
0
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
27.08.2009, 23:34 #9
odip,
Цитата Сообщение от odip Посмотреть сообщение
папка - это тоже файл(без разширения).
Ничего подобного - это файл специального вида !
Ошибся!(каюсь)
Цитата Сообщение от odip Посмотреть сообщение
Переименовывать как файл, но без разширения - возможно?
Цитата Сообщение от odip Посмотреть сообщение
не понял
rename( "TEMP", "PMET");(вот о чем я тогда подумал)
переименовывает и папки, и файлы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2009, 23:34
Привет! Вот еще темы с ответами:

нужна помощь с рекурсией. - C++
Ребята, кто мне может объяснить доступно рекурсию на элементарном примере? в интернетах в основном примеры с факториалом. вроде с ним...

CALLBACK. Нужна помощь - C++
Всем привет! Есть такой код: class ExpressionCalculator { private: ...

Нужна помощь с классом - C++
Вот напечатал это: #include &lt;iostream&gt; #define maxN 10 //количество вершин using namespace std; class directed_graph { ...

Нужна помощь начинающему (while). - C++
Собствено вот код: //While DEMO //прога выводит количество выполненых цыклов while #include &lt;stdio.h&gt; #include &lt;lostream.h&gt; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.08.2009, 23:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru