Периодическое копирование файлов в 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.