3 / 3 / 3
Регистрация: 24.04.2017
Сообщений: 11
1

Получить список файлов из двух папок одновременно

17.11.2017, 11:23. Показов 1250. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
В общем, такая задача. В аргументы передаются пути до двух директорий. Нужно уметь одновременно открывать два файла. И так итерационно для всех файлов в этих директориях. Количество одинаковое. Вариант записать сначала в массив имена файлов не пойдет, потому что файлов несколько сотен тысяч. Ниже пример, как пытаюсь сделать.
Нуждаюсь в помощи

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
#include "stdafx.h"
#include "windows.h"
 
int main(int argc, char* argv[])
{
    FILE   *fp = 0;
    uchar  tmpl1[BUFFER_SIZE] = { 0 };
    uchar tmpl2[BUFFER_SIZE] = { 0 };
    size_t size;
    size_t n;
    FILE   *Fl = 0;
    
    if (argc != 3 || argv[1] == NULL || argv[2] == NULL)
    {
        printf("Error", argv[0]);
        return -1;
    }
 
    char            Fn[255];
    HANDLE          hFind;
    WIN32_FIND_DATA ff;
 
    char            Fn1[255];
    HANDLE          hFind1;
    WIN32_FIND_DATA ff1;
    
 
    sprintf_s(Fn, 255, "%s\\*", argv[1]); 
    sprintf_s(Fn1, 255, "%s\\*", argv[2]);
 
 
    if ((hFind = FindFirstFile(Fn, &ff)) != INVALID_HANDLE_VALUE)
    {
                if ((hFind1 = FindFirstFile(Fn1, &ff1)) != INVALID_HANDLE_VALUE)
        {
            do
            {
                if (ff.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue;
                ff1.dwFileAttributes;
                sprintf_s(Fn, "%s\\%s", argv[1], ff.cFileName);
                sprintf_s(Fn1, "%s\\%s", argv[2], ff1.cFileName);
                                // здесь уже не читает имя второго файла
                printf(Fn, "%s\\%s", argv[1], ff.cFileName);
                                printf(Fn1, "%s\\%s", argv[2], ff1.cFileName);
 
                if (fopen_s(&fp, Fn, "rb") != 0)
                {
                    printf("Error reading\nUsage: %s <tmpl1>\n", argv[1]);
                    return -1;
                }
                size = _filelength(_fileno(fp));
                n = fread(tmpl1, size, 1, fp);
                fclose(fp);
                fp = 0;
 
            } while (FindNextFile(hFind, &ff)); // и надо придумать, как переходить на след файл во второй директории 
            FindClose(hFind);
        }
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2017, 11:23
Ответы с готовыми решениями:

Получить список файлов и папок
Имеется строка в которой содержится адрес некоторой папки. Как можно получить список всех файлов и...

Получить список файлов и папок в директории
Вот такой вопрос возник, допустим я хочу написать что то типа файлового менеджера, как мне получить...

Получить список файлов и папок в подкаталоге
Здравствуйте как сделать см. тему ??? фалйы знаю FileInfo а вот каталоги как ?

Получить список файлов и папок в ListView
День добрый! Это, наверное, уже крик души. Есть задание - создать FTP-клиент. До самого FTP ещё...

6
7639 / 6447 / 2940
Регистрация: 14.04.2014
Сообщений: 28,110
17.11.2017, 14:14 2
В чём смысл этой задачи? А если файлов разное количество?
0
3 / 3 / 3
Регистрация: 24.04.2017
Сообщений: 11
17.11.2017, 14:38  [ТС] 3
смысл в том, чтобы найти возможные различия в содержимом этих файлов.
если на пальцах, то как-то так:
1 файл: массив X координат, полученных одним способом
2 файл: массив X координат, полученных другим способом
таких файлов в обоих папках равное количество.
я хочу составить гистограмму отклонений этих Х координат и провести полную статистику.
Сбор гистограммы, анализ статистики я уже сделала. Вот не могу придумать про одновременное открывание файлов.
0
7639 / 6447 / 2940
Регистрация: 14.04.2014
Сообщений: 28,110
17.11.2017, 15:36 4
Во-первых, файлы будут выбираться в произвольном порядке.
Если имена одинаковы, то делай поиск в первой директории, а из второй просто открывай, подставив к найденному имени другой путь.
0
3 / 3 / 3
Регистрация: 24.04.2017
Сообщений: 11
17.11.2017, 15:49  [ТС] 5
Считаем, что имена одинаковые. Мне интересно, как открывать попарно файлы одновременно и итерационно.
0
7639 / 6447 / 2940
Регистрация: 14.04.2014
Сообщений: 28,110
17.11.2017, 15:53 6
Находишь, например, файл "c:\dir1\f1.txt", берёшь имя, подставляешь другой путь и получаешь "c:\dir2\f1.txt". Открываешь и пользуешься. Что не ясно?
1
3 / 3 / 3
Регистрация: 24.04.2017
Сообщений: 11
17.11.2017, 16:06  [ТС] 7
ясно было и с первого раза. Не понятно было как это сработает, чтобы друг за другом файлы открывались. Затестила, получилось. Спасибо!
0
17.11.2017, 16:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2017, 16:06
Помогаю со студенческими работами здесь

Как получить список файлов и папок в директории
Как получить список файлов и папок в директории (именно в директории, без файлов подпапок)?

SFTP получить список файлов и папок раздельно
Помогите пожалуйста, как получить список файлов и папок раздельно для sftp если использовать...

Как вывести список файлов из папок и получить их данные
У меня есть папка. В ней файлы. Мне нужно зная только путь до папки, вывести сначала список всех...

Получить список папок и вложенных файлов по указанному пути
Всем привет. Нашел пример, который выводит список файлов и папок, но, из папки с проектом. Как...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru