ايران ويج

نسخه‌ی کامل: آموزش کار با فایل ها در C++ Qt
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
چارچوب Qt برای کار با فایل ها کلاس QFile را ارائه کرده است. QFile رابطی برای خواندن و نوشتن فایل های متنی و یا باینری می باشد. از این کلاس هم می توان به صورت تنها و هم با سایر کلاس ها مانند QTextStream و QDataStream استفاده نمود.

[تصویر:  qt-qfile.gif]

توجه: برای درک بهتر این مقاله آشنایی با مبانی زبان برنامه نویسی C++ الزامی است.

برای استفاده از این کلاس باید هدر <QFile> را include کنید.

نام فایلی که قصد کار کردن با آن را دارید معمولا در constructor کلاس ارسال می شود. جدا کننده در نام فایل باید / باشد حتی در ویندوز! اگرچه در ویندوز جدا کننده \ هم پذیرفته می شود ولی بهتر است برای حفظ امکان جابجایی کد خود همیشه از / استفاده کنید.

متد های open و close برای باز کردن و بستن فایل استفاده می شوند. با استفاده از توابع read و readLine و readAll و write می توانید اعمال خواندن و نوشتن را انجام دهید. اگرچه معمولا این کارها با استفاده از کلاس های QTextStream و QDataStream انجام می شوند.

تابع size هم مقدار حجم فایل را بر می گرداند.


مثال نوشتن در فایل

کد:
#include <QFile>

int main(int argc, char *argv[])
{
    QFile file("E:/1.txt");
    if (file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        file.write("salam");
        file.close();
    }
    return 0;
}


در خط 5 یک نمونه از کلاس QFile با نام متغییر file ایجام می کنیم که قصد کار با فایل E:\1.txt را دارد.


در خط 6 فایل را باز می کنیم. متد open آرگومنتی از نوع OpenMode دریافت می کند که مشخص کننده نحوه باز کردن فایل است. برخی از مقادیر معتبر عبارتند از QIODevice::ReadOnly, QIODevice::WriteOnly, QIODevice::ReadWrite, QIODevice::Append. در اینجا فایل به صورت متن فقط قابل نوشتن باز شده است.


در خط 8 عبارت salam در فایل نوشته می شود و در خط بعد فایل بسته می شود.



نمونه کد خواندن فایل


کد:
#include <QFile>
#include <QDebug>

int main(int argc, char *argv[])
{
    QFile file("E:/1.txt");
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QString text = file.readAll();
        file.close();
        qDebug() << text;
    }
    return 0;
}



طریقه باز کردن فایل مانند نمونه کد نوشتن فایل است با این تفاوت که OpenMode به جای QIODevice::WriteOnly مقدار QIODevice::ReadOnly داده شده است چرا که در اینجا قصد نوشتن فایل را نداریم.


بعد از باز کردن فایل با استفاده از تابع readAll تمام محتوای فایل را می خوانیم و در متغییر text که از نوع QString است ذخیره می کینم. این محتوا در خط 11 در کنسول نمایش داده می شود.



بررسی وجود و یا عدم وجود فایل



کد:
QFile::exists("D:\\1.txt");

کد بالا در صورت وجود فایل D:\1.txt مقدار true بر می گرداند در غیر این صورت مقدار false.



کپی کردن فایل

کد:
1
    
QFile::copy("D:\\1.txt", "D:\\2.txt");


فایل D:\1.txt را در D:\2.txt کپی می کند. در صورت موفقیت مقدار true را بر می گرداند.


حذف کردن فایل

کد:
QFile::remove("D:\\2.txt");


کد بالا فایل D:\2.txt را حذف می کند. در صورت موفقیت مقدار true را بر می گرداند.



لطفا سوالات و مشکلات خود در با ما در میان بگذارید.


www.naminic.com