Выгодные курсы обмена

 
 
Главная arrow С++ (часть 2) arrow Функция openfileOQ

Функция openfileOQ

Функция openfileO открывает на диске файл, в который будет записан файл, загружаемый из Интернета. Она также возвращает длину любого уже имеющегося на диске файла с тем же именем. Далее приведен код функции.
// Открывает файл вывода, инициализирует поток
// вывода и возвращает длину файла. Если
// reload имеет значение true, сначала укорачивается
//до нуля любой уже существующий файл.
unsigned long Download::openfile(char *url,
bool reload,
ofstream &fout)  {
char fname [MAX_FILENAME_SIZE] ;
if (!getfname (url, fname))
throw DLExc("File name error.");
if(!reload)
fout.open(fname,  ios::binary | ios::out | ios::app |  ios::ate);
else
fout.open(fname, ios::binary | ios::out | ios::trunc);
if(!fout)
throw DLExc("Can't open output file.");
// Получает текущую длину файла, return fout.tellp();
}
У функции openfileO три параметра: url, reload и fout. Указатель на строку, содержащую ресурс URL, передается в параметре url. Значение, передаваемое в параметре reload, определяет, нужно ли укорачивать до нуля длину уже имеющегося на диске файла с тем же именем. Параметр fout содержит указатель на переменную, в которой будет размешаться файловый
ПОТОК ПОСЛе Завершения ФУНКЦИИ openfileO.
Сначала функция openfileO получает имя файла из строки, заданной параметром url. Затем она проверяет значение параметра reload. Если он равен true, файл открывается для вывода, а содержимое уже имеющегося на диске файла с тем же именем уничтожается. Если параметр reload равен false, функция открывает файл без удаления содержимого имеющегося на диске файла с тем же именем и задает режим дозаписи в конец файла. Затем указатель текущей позиции в файле перемещается на конец файла. Далее с помощью вызова функции tellp о определяется длина файла. Если файл новый, его длина равна нулю. Для уже имеющегося на диске файла с тем же именем определяемая величина равна длине файла, так как указатель текущей позиции в файле был установлен в конец файла при его открытии. Функция openf iie () возвращает длину файла.