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

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

Войти
Регистрация
Восстановить пароль
 
Morfeus
9 / 9 / 1
Регистрация: 22.10.2010
Сообщений: 110
#1

Копирование файлов через сравнение - C++

04.12.2012, 21:23. Просмотров 406. Ответов 1
Метки нет (Все метки)

Сравнить два каталога разницу записать в третий.
В третий каталог нужно положить все файлы, которые есть в первом каталоге , но отсутствуют во втором.
В третий каталог нужно положить все файлы, которые есть во втором каталоге , но отсутствуют в первом.
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
int main ( int argc, char ** argv )
{
    WIN32_FIND_DATA f1, f2;
    HANDLE hf1 = FindFirstFile("C:\\WORK\\OS\\TEST\\dir1\\*.txt", &f1);
    HANDLE hf2 = FindFirstFile("C:\\WORK\\OS\\TEST\\dir2\\*.txt", &f2);
    if((hf1 != INVALID_HANDLE_VALUE) || (hf2 != INVALID_HANDLE_VALUE)) { 
        do
        {
            string rez1 = "C:\\WORK\\OS\\TEST\\RESULT\\"; rez1 += f1.cFileName;
            string rez2 = "C:\\WORK\\OS\\TEST\\RESULT\\"; rez2 += f2.cFileName;
            string dr1 = "C:\\WORK\\OS\\TEST\\dir1\\";
            dr1 += f1.cFileName;
            string dr2 = "C:\\WORK\\OS\\TEST\\dir2\\";
            dr2 += f2.cFileName;      
 
            string str1 = f1.cFileName, str2 = f2.cFileName;
            if(str1 != str2) {
                cout << f1.cFileName <<"   " <<f2.cFileName <<"      ne ravn"<<endl;
                CopyFile(dr1.c_str(), rez1.c_str(), true);
                CopyFile(dr2.c_str(), rez2.c_str(), true);
            }
            else {
                cout << f1.cFileName <<"   " <<f2.cFileName <<"      ravn"<<endl;
            }
        }while((FindNextFile(hf1,&f1)) || (FindNextFile(hf2,&f2)));
    }    
    FindClose(hf1);
    FindClose(hf2);
 
    system("pause");
}
Как реализовать сравнение как условие для записи файлов ??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 21:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копирование файлов через сравнение (C++):

копирование файлов - C++
Всем приятного времени суток! Мне нужно просто скопировать файл, вроде ничего сложного) Сделал так: #include &lt;stdio.h&gt; #include...

Копирование файлов C++ - C++
Прошу помочь найти в чем здесь ошибка. Условие: Дан текстовый файл на русском языке. Скопировать содержимое данного файла в новый...

Копирование файлов - C++
Приветствую. Пытался написать программу для копирования содержимого одного файла в другой: #include &lt;iostream&gt; #include...

копирование файлов - C++
Зраствуйте можете подсказать алгоритм копирования файлов любого типу(разширения)??

Копирование файлов - C++
Народ, дайте пожалуйста исходник копирования файлов по принципу &quot;открыть файл1 -&gt; считать в буфер содержимое -&gt; открыть файл2 -&gt; заменить...

Сравнение файлов - C++
Привет всем ! Дано два текстовых файла. Сравнить их содержимое и в новый файл записать либо номер первой строки, в которой они...

1
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
05.12.2012, 00:40 #2
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
#include <iostream>
#include <string>
#include <set>
#include <tchar.h>
#include <Windows.h>
#include <stdexcept>
#include <algorithm>
#include <iterator>
 
typedef std::basic_string<TCHAR> tstring;
 
void GetFileNames(tstring const& dirpath, std::set<tstring>& set)
{
    static WIN32_FIND_DATA fd;
    HANDLE hFile = FindFirstFile((dirpath + _T("*.*")).c_str(), &fd);
    if(hFile != INVALID_HANDLE_VALUE)
    {
        do
        {
            if(FILE_ATTRIBUTE_DIRECTORY != fd.dwFileAttributes)
                set.insert(fd.cFileName);
        }
        while(FindNextFile(hFile, &fd));
        FindClose(hFile);
    }
    else
        throw std::runtime_error("FindFirstFile failed");
}
 
int main ()
{
    try
    {
        tstring dirpath1(_T("c:/Test1/")), dirpath2(_T("c:/Test2/")), dirpath3(_T("c:/Test3/"));
        std::set<std::basic_string<TCHAR>> set1, set2, set3;
        GetFileNames(dirpath1, set1);
        GetFileNames(dirpath2, set2);
        std::set_symmetric_difference(set1.begin(), set1.end(), set2.begin(), set2.end(), std::inserter(set3, set3.begin()));
        for(std::set<tstring>::const_iterator ci = set3.cbegin(); ci != set3.cend(); ++ci)
        {
            _tprintf(_T("%s\n"), ci->c_str());
            if(CopyFile((dirpath1 + *ci).c_str(), (dirpath3 + *ci).c_str(), true))
            ;
            else if(!CopyFile((dirpath2 + *ci).c_str(), (dirpath3 + *ci).c_str(), true))
            {
                throw std::runtime_error("CopyFile failed twice");
            }
        }
    }
    catch(std::exception const& e)
    {
        std::cerr << "Exception: " << e.what() << std::endl;
    }
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 00:40
Привет! Вот еще темы с ответами:

сравнение файлов - C++
Нужно доделать программу вот по такому заданию Даны символьные файлы f и s . Записать в файл h все начальные совпадающие компоненты...

Копирование, сортировка файлов - C++
Добрый день! У меня в папке много различных файлов необходимо, переместить или скопировать их по различным созданным папкам(сортировка не...

Побайтовое копирование файлов - C++
Добрый день. Подскажите пожалуйста,как в данном примере можно было бы выполнить копирование файла в обратном порядке? ifstream...

Копирование текстовых файлов - C++
Столкнулся с такой проблемой : при копировании из одного файла в другой мне нужно исключить(пропустить) слова, которые начинаются на букву,...


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

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

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