На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Периодическое копирование файлов в 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, си плюс плюс, файлы

Читайте также:




Зарезервированные и исключенные символы HTTP и URL
Замок в адресной строке


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.