Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lect12

.pdf
Скачиваний:
7
Добавлен:
06.02.2016
Размер:
909.11 Кб
Скачать

Созданиефайловогопотокаи открытиефайла

Файловыйпотокможетбытьсвязанс файломследующимиспособами:

Присозданииобъектапотока,спомощью конструктораспараметрами

Привызовеметодаopen

Проверкауспешностиоткрытияпотока выполняетсяпутемпроверкифлагов объектаилиегопроверкойвусловии.

Созданиефайловогопотокаи

открытиефайла

1) Создание потока одновременно с открытием

fstream(const char* name, int omode,

int = filebuf::openprot )

имя-класса имя-объекта;

имя-объекта.open(const char *fileName, int mode = значение_по_умолчанию,

int protection =

значение_по_умолчанию);

Созданиефайловогопотокаи открытиефайла

Значенияпоумолчаниюопределяются тем,какойименнопотокиспользуется: чтенияилизаписи.

Дляifstream

mode = ios::in

Дляofstream

mode = ios::out

Дляfstream

mode = ios::in | ios::out

protection = filebuf::openprot (Unix

режим0666)

Режимыоткрытияфайла

enum open_mode {

для чтения

// открыть только

in

=

0x01,

// открыть только

для записи

out

=

0x02,

// установить указатель на конец файла

ate

=

0x04,

// дописывать данные в конец файла

app

=

0x08,

// усечь файл до нулевой длины

trunc

=

0x10,

// если файл не

существует, ошибка открытия

nocreate

=

0x20,

// если файл уже существует, ошибка открытия

noreplace =

0x40,

// открыть файл для двоичного обмена

binary

=

0x80

};

 

 

Завершениеработысфайлом

Файлпозавершенииработысним крайнежелательнозакрыть:

этопозволитдругимпроцессамработатьс ним

этоуменьшитколичествооткрытых файловыхдескриптороввсистеме

это,вслучаеofstream,сброситвсебуферы наноситель.

Закрытиевыполняетсяспомощью методапотокаclose();

Примерыоткрытиятекстовых файлов

// Дописывание в конец ofstream ofile("data1",

ios::app | ios::nocreate); ofile << k << z <<endl; ofile.close();

// Ввод

ifstream ifs("data2", ios::in); ifs >> t >> w;

ifs.close();

Примерыоткрытиятекстовых файлов

// Ввод и вывод fstream inout("data3",

ios::in | ios::out); inout << i;

/* Здесь другие операции и позиционирование */

inout >> j; inout.close();

Примерработыстекстовыми файлами

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

ПримербылнаписандляОСLinux, исходныйицелевойфайлы находилисьвдомашнемкаталоге пользователя:/home/max/file_from.txt и/home/max/file_to.txt

Примерработыстекстовыми файлами

#include <iostream> #include <fstream>

using namespace std;

int main(int argc, char *argv[]) { ifstream f1("/home/max/file_from.txt");

if (!f1) {

cerr << "Неудалосьоткрыть файлfile_from" << endl;

return 1;

}

Примерработыстекстовыми

файлами

ofstream f2("/home/max/file_to.txt"); if (!f2) {

cerr << "Неудалосьоткрыть файлfile_to" << endl;

return 1;

}

int rdNum; while(!f1.eof()) { f1 >> rdNum;

if (rdNum >= 0) {

f2 << rdNum << " ";

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]