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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
#1

Запись путей файлов в *.txt файл. - C++

04.10.2011, 12:31. Просмотров 2656. Ответов 27
Метки нет (Все метки)

Здравствуйте.

Возник вопросик.

С помощью чего можно организовать такое действие программы!

Исполняемый файл программы (*.ехе) мы кидаем в любую папку, после запуска (*.ехе) в текстовый файл (*.txt) должны быть сохранены все пути к файлам в данной папке.

Если в папке где лежит (*.ехе) существуют еще папки и в них другие файлы то путь к ним тоже должен быть занесен в *.txt.

Например:

*.ехе помещен в папку setup

в *.txt должно быть сохранено:

C++
1
2
3
4
5
6
7
8
9
d:\setup\Half_Life_Setup.exe
d:\setup\PES2012\icon.ico
d:\setup\PES2012\setup.exe
d:\setup\PES2012\setup-1.dat
d:\setup\PES2012\setup-2.dat
d:\setup\PES2012\setup-3.dat
d:\setup\PES2012\setup-4.dat
d:\setup\PES2012\redist\vcredist_x86.exe 
d:\setup\PES2012\redist\directX\dxwebsetup.exe
Как видите сохранены все пути к файлам данной папки даже если в ней есть и другие папки с другими файлами.

В какую сторону копать??
Какие алгоритмы рассматривать??

*.txt файл создаю так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "fstream"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    ofstream out;
 
    out.open("test.txt");//открываем / создаем test.txt
 
 
 
    out.close(); //закрываем test.txt
    return 0;
}

Спасибо!!!)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2011, 12:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись путей файлов в *.txt файл. (C++):

Переписать все числа из файлов 1.txt и 2.txt в файл 3.txt - C++
Здравствуйте! Нужна помощь. Есть два текстовых файла 1.txt и 2.txt в них есть числа. реализовать консольное приложение которое...

Запись в файл txt - C++
studBeg = GetStud(hDlg); out.open("output.txt", ios_base::app); out << studBeg.fam << studBeg.imia <<...

Запись текста в файл txt - C++
Здравствуйте , подскажите как реализовать запись в файл, у меня что то не получается har name; puts("Введите термин:"); ...

Чтение/запись из/в файл .txt - C++
Имеется файл названный stses формата txt, и вот его содержание: 3 Loyed 4 Greable 7 Otto 2 в методичке приведен пример...

Зависает запись в txt - файл - C++
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <windows.h> #include <fstream> #include...

Запись данных в файл txt - C++
записываю через for(int i=0;i<l;i++) f<<a.fio<<" "<<a.nomer<<" "<<a.inf<<" "<<a.inmov<<" "<<a.math<<" "<<a.fiz<<endl; Если...

27
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2011, 12:37 #2
Используя WinAPI?
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.10.2011, 12:37  [ТС] #3
Цитата Сообщение от Deviaphan Посмотреть сообщение
Используя WinAPI?
а точнее))))
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2011, 12:43 #4
Написать перебор файлов в папках и подпапках используя WinAPI?
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.10.2011, 12:43  [ТС] #5
Можно даже без корневого каталога!

C++
1
2
3
4
5
6
7
8
9
setup\Half_Life_Setup.exe
setup\PES2012\icon.ico
setup\PES2012\setup.exe
setup\PES2012\setup-1.dat
setup\PES2012\setup-2.dat
setup\PES2012\setup-3.dat
setup\PES2012\setup-4.dat
setup\PES2012\redist\vcredist_x86.exe 
setup\PES2012\redist\directX\dxwebsetup.exe
Начиная просматривать все пути с той папки где находить exe програмкиЁ
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2011, 12:44 #6
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.10.2011, 12:44  [ТС] #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
Написать перебор файлов в папках

Каким образом??
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2011, 12:46 #8
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Каким образом??
Это я не намекал на способ решения, а спрашивал, для Windows программа или нет.
Знаки препинания я по назначению использую, а не только для смайликов.
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.10.2011, 12:51  [ТС] #9
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это я не намекал на способ решения, а спрашивал, для Windows программа или нет.
Знаки препинания я по назначению использую, а не только для смайликов.
Обыкновенная консольная программка!!
Запускаешь, консоль появилась - изщезла, и потом создался *.txt с путями!
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2011, 12:57 #10
По ссылке выше обыкновенная консольная программа, которая делает почти то, что тебе нужно. Читай, разбирайся, твори.
1
-=ЮрА=-
Заблокирован
Автор FAQ
04.10.2011, 13:01 #11
Infinity3000, посмотри сюда
Поиск файла по шаблону
там лишь немножко под себя доработать останется...
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.10.2011, 13:02  [ТС] #12
Цитата Сообщение от Deviaphan Посмотреть сообщение
По ссылке выше обыкновенная консольная программа, которая делает почти то, что тебе нужно. Читай, разбирайся, твори.
Да. Но она ищет путь к *.ехе файлу. А мне нужно чтобы находило пути к файлам которые лежат в одной директиве с *.ехе. Плюс если есть папки в этой директории то и пути к тем файлом которые лежат в папках.)
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.10.2011, 13:03  [ТС] #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Infinity3000, посмотри сюда
Поиск файла по шаблону
там лишь немножко под себя доработать останется...
спасибо!!!
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2011, 13:04 #14
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Читай, разбирайся, твори
Почитай про флаги, которые для результатов доступны и т.д. В общем, подпись свою перечитай.
1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
04.10.2011, 20:29 #15
Infinity3000, вот посмотри написал на скорую руку.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <windows.h>
#include <stdio.h>
int    getInfoPath(char* name, char* path);
int    putFileName(FILE* fp, const char* name, const char* path, bool cur = true);
 
int main(){
   FILE*  fp;
   char path[MAX_PATH];
   char name[MAX_PATH];
   if(! getInfoPath(name, path)) 
        return 1;
   if(!(fp = fopen("file_list.txt", "w")))
        fp = freopen("file_list.txt", "w+", fp);
   putFileName(fp, name, path);
   fflush(fp);
   fclose(fp);
   return 0;
}
 
// берём путь из коммандой строки
int  getInfoPath(char* name, char* path) {
   char* cmd = GetCommandLineA();
   while(*cmd++ != '"'); 
   char* str;
   if(! (str = strrchr(cmd, '\\')))
         return 0;
   strncpy(path, cmd, strlen(cmd) - strlen(str) + 1);
   strcpy(name, path);
   strcat(path, "*");
   strncat(name, str + 1, strlen(str)-3);
   return 1;
}
 
// рекурсивная функция проходит по всем вложенным папкам...
int   putFileName(FILE* fp, const char* name, const char* path, bool cur) {
  WIN32_FIND_DATAA fdata;
  char dir[MAX_PATH];
  char idir[MAX_PATH];
  ZeroMemory(&fdata, sizeof(WIN32_FIND_DATAA));
  HANDLE fcur = FindFirstFileA(path, &fdata);
  if(fcur == INVALID_HANDLE_VALUE)
         return 0;
  do {
         if( ! strcmp(fdata.cFileName, ".")  || ! strcmp(fdata.cFileName, ".."))
                continue;
         strncpy(dir, path, strlen(path)-1);
         dir[strlen(path)-1] = '\0';
         if(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
                 sprintf(idir, "%s%s\\*", dir, fdata.cFileName);
                 putFileName(fp, name, idir, false);
                 continue;
          } 
           if(cur) { // свой исполнительный файл не берём в отсчёт
                   sprintf(idir, "%s%s", dir, fdata.cFileName); 
                   if(! stricmp(idir, name))
                          continue;
            }
            fprintf(fp, "%s%s\n", dir, fdata.cFileName);
            printf("%s%s\n", dir, fdata.cFileName);
  } while(FindNextFileA(fcur, &fdata) != 0);
  FindClose(fcur);
  return 1;
}
Вот ещё исходник.
1
Вложения
Тип файла: rar flist.rar (4.2 Кб, 18 просмотров)
04.10.2011, 20:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2011, 20:29
Привет! Вот еще темы с ответами:

Запись результата программы в файл txt - C++
Всем Добрый вечер.Задание заключается в том что нужно записать имена,предметы и список оценок в файлик Создать функцию и вызвать ее при...

Запись в файл txt построчно из <list> - C++
# include &lt;iostream&gt; # include &lt;list&gt; # include &lt;string&gt; # include &lt;fstream&gt; # include &lt;cstdio&gt; using namespace std; ...

Запись в файл .txt во время исполнения програмы - C++
Есть цикл, когда он находит определенную строку, то он должен записать ее в файл. Если найдет еще подходящую строку, то должен снова...

Разделить файл txt на несколько равных маленьких файлов - C++
Пожалуйста помогите. Есть большой txt там 1335478 символов Как сделать чтоб он создал папку а в ней 667 файлов по 2000 символов в каждом...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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