شاید وقتی عنوان این مقاله را دیدی کمی برایتان ساده و سطح پایین به نظر آمد ولی مفهومی که قصد آموزش آن را در این مقاله داریم با آن چیزی که در نظر شماست متفاوت است.فرآیند ارتباط بین جریان با فایل را باز کردن فایل می نامند. هنگامی که فایلی باز می شود برای خواندن و نوشتن آماده است. متد open یک فایل متن یا باینری را باز می کند. باید یک متغیر از نوع ofstream/ifstream بسته به احتیاج تعریف شود.
ifstream infile;
ofstream outfile;
fstream myfile;
سپس فایل را با استفاده از open باز شود. اسم/مسیر فایل و مد مورد نظر را تعیین کنید. مد مشخص می کند فایل ورودی، خروجی یا هردو است.فرم کلی متد به صورت زیر است:
myfile.open(filename, mode)
filename رشته ای است که نام خارجی فایل، یعنی نامی که توسط دیسک شناخته شده است، را مشخص می کند. mode مقداری است که توسط ios تعریف می شود و مشخص می کند فایل با چه مدی (متن/باینری) و به چه منظوری (خواندن/نوشتن/ایجاد) باز شود. با استفاده از عملگر | می توان چند مقدار را با هم تلفیق کرد. پیش فرض فایل در مد متن باز می شود.
مثال. فایل متن myfile.txt را به منظور خواندن باز می کند.
infile.open(“myfile.txt”,ios::in);
مثال. فایل باینری myfile.txt را به منظور خواندن باز می کند.
infile.open(“myfile.txt”,ios::in|ios::binary);
مثال. فایل متن myfile.txt را به منظور نوشتن باز می کند.
outfile.open(“myfile.txt”,ios::out);
مثال. فایل متن myfile.txt را به منظور خواندن باز می کند.
myfile.open(“myfile.txt”,ios::in|ios::out);
مثال. فایل متن myfile.txt را به منظور اضافه کردن به انتهای آن خواندن باز می کند.
outfile.open(“myfile.txt”,ios::app);
مثال. فایل متن myfile.txt را پاک می کند و برای نوشتن باز می کند.
outfile.open(“myfile.txt”,ios::trunc);
تحت شرایطی ممکن است باز کردن فایل با عدم موفقیت روبرو شود نظیر: استفاده از نام فایل غیر مجاز، موجود نبودن فایل روی دیسک یا مسیر ذکر شده، نداشتن اجازه دسترسی و …. اگر بازکردن فایل موفق نباشد تابع مقدار NULL را برمی گرداند که توسط متدهای is_open یا fail بررسی می شود و برنامه باید پیغام خطای مناسب را با cerr نمایش دهد.
مثال.
if (!outfile.is_open()) {
cerr << “Could not create file.” << endl;
exit(1);
}