Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
1

Синхронизация папок

05.12.2010, 04:08. Показов 3197. Ответов 12
Метки нет (Все метки)

Доброй ночи всем. Есть задача: синхронизировать две папки. Пока только знаю как копировать файлы
Может кто подскажет, или покажет код? Раньше с такими задачами не сталкивался и тут в ступор зашел.
1

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2010, 04:08
Ответы с готовыми решениями:

Синхронизация папок
На 2-х ПК необходимо иметь синхронизировать папки, с учетом всех изменений. Банальным копированием...

Синхронизация папок
Задача - синхронизация выбранной папки между компьютерами. На одном стоит Windows7, на втором -...

Синхронизация папок
Имеется один компьютер с UBUNTU на котором хранятся файлы и папки, нужно предоставить доступ к этим...

Синхронизация папок
Необходимо создать программу которая раз в 10 секунд проверяет папку №1, если в папке появляются...

12
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
07.12.2010, 21:29  [ТС] 2
Ребят, ну подскажите! Насколько я знаю, будет проще, если использовать STL. ОЧЕНЬ НУЖНО!
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
08.12.2010, 02:51 3
Никогда этим не занимался, но предположить можно так
1) Получить список папок файлов с их датами создания\изменения
2) узнать какие папки\файлы имеют более позднюю дату
3) заменить старое на новое

а если есть "Эталонная" папка то проще будет
0
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
09.12.2010, 20:58  [ТС] 4
А что значит "эталонная" папка?
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
09.12.2010, 22:06 5
Цитата Сообщение от broDiaga_cpp Посмотреть сообщение
А что значит "эталонная" папка?
пример:
имеется 10 MP3 флешек и на компе папка D:\Music
тут мы сравниваем сидержимое с флешки с папкой D:\Music


Но я так понял что вам нужен другой метод
я тут подумал немного и пост выше не совсем то что нужно

Имеем D:\Folder1, D:\Folder2

Сканируем Folder1 (получаем имена файлов и дату их создания)
получаем например
file1.txt 01.01.2010 15:15:15
file2.txt 02.01.2010 12:03:15
file3.txt 01.01.2010 11:44:59

проверяем наличие файла file1.txt в D:\Folder2
если(файл file1.txt в D:\Folder2 не существует) копируем file1.txt в D:\Folder2
если(файл file1.txt в D:\Folder2 существует и дата создания меньше) копируем file1.txt в D:\Folder2
и так пока список фалов не кончится

и тоже самое только с Folder2



Не по теме:

еслиб я знал как получить дату создания в целом виде тобеж не 10,10,2010 15:21:12 а в INT (чтоб сравнивать что больша а что меньше то написал бы пример)

0
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
09.12.2010, 22:17  [ТС] 6
Ок. это я понял. проблема заключается вот в чем еще. в функции FindFirst не так работает.
C++
1
2
3
4
5
6
7
8
9
10
TSearchRec sr;
  if (FindFirst("C:\doc\*.*", faAnyFile, sr) == 0) // можно задать маску для файлов, например: Dir+"\\*.txt"
     {
       do
         {
           if (!(sr.Attr & faDirectory))
                Memo1->Lines->Add(sr.Name.c_str()); // выводим в TMemo
         } while (FindNext(sr) == 0);
     }
  FindClose(sr);
так он ничерта не выводит
как мне сделать чтобы выводил к примеру файлы в папке doc на диске c?
0
SirZh
09.12.2010, 22:23
  #7

Не по теме:

БЛИН, ошибся

0
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
09.12.2010, 22:26  [ТС] 8
Ну про Total Commander я знаю. Мне нужно написать программу, которая будет синхронизировать файлы из определенной папки на харде с папкой, к примеру, на флешке. Эти два путя я задаю и прога всё делает.
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
09.12.2010, 22:41 9
У Вас все прекрасно работает, только нужно двойной слеш \\
C++
1
2
3
4
5
6
7
8
9
10
11
    TSearchRec sr;
    if(FindFirst("C:\\*", faAnyFile, sr) == 0) // C:\\doc\\*    
    {
        do
        {
            if(!(sr.Attr & faDirectory))
                Memo1->Lines->Add(sr.Name.c_str());
        }
        while(FindNext(sr) == 0);
    }
    FindClose(sr);
0
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
09.12.2010, 22:50  [ТС] 10
Да, действительно. с двойным слешем работает.
В общем нашел такой способ. прикольней FindFirst`a будет.
создать три объекта:
1 - DriveComboBox
2 - DirectoryListBox
3 - FileListBox
и связать их следующим способом:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm2::DriveComboBox1Change(TObject *Sender)
{
DirectoryListBox1 -> Drive = DriveComboBox1 -> Drive;
FileListBox1 -> Drive = DirectoryListBox1 -> Drive;
 
}
//---------------------------------------------------------------------------
void __fastcall TForm2::DirectoryListBox1Change(TObject *Sender)
{
FileListBox1->Directory = DirectoryListBox1->Directory;
}
Так можно сказать ничего делать не нужно. Правда один минут. Вся эта конструкция на форме занимает довольно много места. И если прога направлена не только на резервное копирование, то это будет большим минусом.
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
09.12.2010, 23:11 11
C++
1
Visible=false;


еще желательно X->Update(); делать
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 15
27.10.2016, 03:16 12
А можете написать всю эту программу, мне как раз нужно такую...
Вот как она звучит:
Разработать программу, которая синхронизирует содержимое заданного каталога с эталонным. После запуска и отработки программы в заданном каталоге должен оказаться тот же набор фалов, что и в эталонном ( если файла нет - он копируется из эталонного каталога, если найдется файл, которого нет в эталонном - удаляется). Если файл с некоторым именем есть и в заданном и в эталонном каталогах , то он перезаписывается только в случае, если в эталонном более новый файл.
Имена каталогов передаются программе при запуске в качестве параметров командной строки.
0
0 / 0 / 0
Регистрация: 23.12.2017
Сообщений: 1
23.12.2017, 15:40 13
Здарова, бро, помоги, если дописал синхронизатор, то кинь, очень надо. А если не дописал то помоги написать, пожалуйста.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2017, 15:40

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Rsync синхронизация папок
Есть две папки dir1 и dir2 В dir2 файлы всё время прибавляются и обновляются. Необходимо в...

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

ubuntu linux синхронизация папок
задача достаточно проста: синхронизация файлов между флешкой и папкой на компе нажатием кнопки ...

Программная синхронизация содержимого двух папок
Здравствуйте! Написал код где происходит сравнение 2х папок, теперь мне нужно сделать если папки не...


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

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

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