Периодическое копирование файлов в C++ с паузой
Данная запись является заметкой на полях. Может быть, кто-то и почерпнет из неё что-то полезное, но для меня это просто заметка. Эта заметка будет являться частью программы, которая будет копировать файлы с некоторой целью. Но об этом позднее.
Итак, что делает наша программа? Она берет файл, проверяет его на существование (ошибкой открытия) и копирует его. Все это выполняется циклом 15 раз, причем с задержкой в 20 секунд. Перейдем непосредственно к тексту программы:
#include <fstream>
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
for (int i = 0; i < 15; i++) {
char * buffer;
int len = 4096;
ifstream infile("1.txt", ios::in | ios::binary);
ofstream outfile("C:\\rab\\1.txt", ios::out | ios::binary);
if(!infile || !outfile){
cout << "Unable to open the file...\n";
return 1;
}
buffer = new char[len];
while (!infile.eof()){
infile.read(buffer, len);
if(infile.gcount()) outfile.write(buffer, infile.gcount());
}
infile.close();
outfile.close();
delete[] buffer;
Sleep(20000);
}
return 0;
}
Теперь разберем код нашей программы построчно. 1-4 - подключение пространства имен и других полезных вещей. В 10 строке определяется размер буфера; вы его можете изменить на другое значение. В 13 строке делаем проверку на ошибку открытия файла - может вы неправильно задали его в строке 12. Функция .gcount() позволяет определить число байт, которое мы считали в последний раз. Именно она и применяется для проверки считывания, а также для установки числа записываемых байт. В строках 22-23 не забудем закрыть файлы.
Есть еще некоторая особенность в нашей программе Цикл (8 строка) выполняется 15 раз. Задержка - 25 строка (специально для этой функции подключаем windows.h в 3-ей строке) - составляет 20 секунд. Таким образом, программа будет копировать файл 1.txt, который располагается в текущей директории в файл "C:\\rab\\1.txt" через каждые 20 секунд 15 раз.
Программа компилировалась на Microsoft Visual Studio 2010. Кстати, если у вас именно такая рабочая среда и возникают разнообразные ошибки при компилировании, совершенно нелогичные и непонятные, то от большинства проблем можно избавиться установкой sp1 для этой среды.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты