QT文件操作

QT文件操作举例:一个控制台程序

//#include <QtCore/QCoreApplication>
#include <QMap>
#include <QColor>
#include <QFile>
#include <QImage>
#include <QtDebug>
#include <iostream>

using namespace std;

/* 操作二进制文件 */
bool writeFile1(const char * filename)
{
/*    QImage image("1.bmp");
    QMap<QString, QColor> map;

    map.insert("red", Qt::red);
    map.insert("green", Qt::green);
    map.insert("blue", Qt::blue);*/

    QFile file(filename);
    if(!file.open(QIODevice::WriteOnly))
    {
        cerr<<"Cannot open file for writing: " << qPrintable(file.errorString()) << endl;
        return false;
    }

    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_3);
    //out << quint32(0x12345678) << image << map;
    out << "What can I do for you?\n";
    out << "     Hello my baby\n";
    file.close();

    return true;
}

bool readFile1(const char *filename)
{
    QImage image;
    QMap<QString, QColor> map;
    QFile file(filename);
    if(!file.open(QIODevice::ReadOnly))
    {
        cerr<<"Cannot open file for reading: " << qPrintable(file.errorString()) << endl;
        return false;
    }

    QDataStream in(&file);
    in.setVersion(QDataStream::Qt_4_3);
    //in >> n >> image >> map;
    char *line = new char[1024];
    while(!in.atEnd())
    {
        in >> line;                 // 会将换行符读取到line中
        cout << line;
    }
    file.close();
    delete [] line;

    //image.save("a.bmp");

    return true;
}

/* 操作文本文件 */
bool writeFile2(const char * filename)
{
/*    QImage image("1.bmp");
    QMap<QString, QColor> map;

    map.insert("red", Qt::red);
    map.insert("green", Qt::green);
    map.insert("blue", Qt::blue);*/

    QFile file(filename);
    if(!file.open(QIODevice::WriteOnly))
    {
        cerr<<"Cannot open file for writing: " << qPrintable(file.errorString()) << endl;
        return false;
    }

    QTextStream out(&file);
    //out << quint32(0x12345678) << image << map;
    out << "What can I do for you?\n";
    out << "     Hello my baby\n";
    file.close();

    return true;
}

bool readFile2(const char *filename)
{
    QFile file(filename);
    if(!file.open(QIODevice::ReadOnly))
    {
        cerr<<"Cannot open file for reading: " << qPrintable(file.errorString()) << endl;
        return false;
    }

    QTextStream in(&file);
    char line[1024] = {0};
    while(!in.atEnd())
    {
        strcpy(line, in.readLine().toStdString().c_str());      // 不会将换行符读取过来
        cout << line << endl;
    }
    file.close();

    return true;
}

int main()
{
    //QCoreApplication a(argc, argv);
    char infile[] = "facts.dat";
/*    if(writeFile1(infile))
    {
        readFile1(infile);
    }*/

    if(writeFile2(infile))
    {
        readFile2(infile);
    }

    return 0;//a.exec();
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值