امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش کار با فایل ها در C++ Qt
نویسنده پیام
naminic آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 4
تاریخ عضویت: اسفند ۱۳۹۲

تشکرها : 1
( 10 تشکر در 4 ارسال )
ارسال: #1
آموزش کار با فایل ها در 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
۰۴-اسفند-۱۳۹۲, ۱۶:۴۶:۱۳
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, alimogmov


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS