QT基础(七)----File文件读写

来源:互联网 发布:商城源码单用户版 编辑:程序博客网 时间:2024/06/15 10:35

一 文件的读写

 头文件 MyWidget.h


#ifndef MYWIDGET_H#define MYWIDGET_H#include <QWidget>class MyWidget : public QWidget{    Q_OBJECTpublic:    explicit MyWidget(QWidget *parent = 0);signals:public slots:};#endif // MYWIDGET_H

源文件MyWidget.cpp

#include "MyWidget.h"#include<QApplication>#include<QFile>#include<QByteArray>        //字节#include<QDebug>#include<QBuffer>#include<QPixmap>#include<QLabel>#include<QTextStream>#include<QDataStream>/* * <QIODevice>类是所有QT关于文件操作的父类 * QFile * QBuffer  内存文件,IO的目标 * QTcpSocket * QUdpSocket * QDataStream  数据流,实质是IO的方法 * QTextStream  文本流 **/MyWidget::MyWidget(QWidget *parent) : QWidget(parent){#if 0    QFile file("../text.txt");           //指定要打开的文件    file.open(QIODevice::ReadWrite);     //打开文件的模式    file.write("abc");                   //向文件里写东西,有多个重载函数    file.close();                        //关闭文件    QString str("中国");                  //    QByteArray qba("中国");               //传递东西的时候一般用这个,传递原始数据,任何数据都可以    qDebug()<< str.size() << qba.size();    //打印 2 6    file.close();#endif#if 0    QBuffer buffer;                     //直接存在内存中,相对于其他的要快    buffer.open(QIODevice::ReadWrite);    buffer.write("ABCDEFG");    buffer.write("abcdefg");    buffer.close();    qDebug()<<buffer.buffer();          //查看buffer中的内容,打印ABCDEFGabcdefg    buffer.close();#endif#if 0    //图100    //内存文件的应用    //将文件读到内存中    QBuffer buffer;    buffer.open(QIODevice::ReadWrite);    QPixmap pixmap = ("../pic.jpg");    pixmap.save(&buffer, "JPG");             //第二个参数保存文件格式    qDebug()<<buffer.size();    //将内存中的数据读出来    QPixmap pixmap2;    pixmap2.loadFromData(buffer.buffer(), "JPG");    //将读出来的数据打印到窗口上    QLabel *label = new QLabel(this);    label->setPixmap(pixmap);    buffer.close();#endif#if 0    QFile file("../testTextStream.txt");    //创建testTextStream.txt文件    file.open(QIODevice::ReadWrite);    QTextStream textStream(&file);          //绑定输出路径    //输出:??-???China123456    textStream<<"中国"<<"China"<<123456;  //将输入转化为字符串,方便写入但是不方便读出    file.close();#endif#if 0    //方便写入和读出    QFile file("../testDataStream.txt");    file.open(QIODevice::ReadWrite);    QDataStream dataStream(&file);    dataStream<<"中国"<<"China"<<123456<<QPoint(1, 1);        //打印的东西不是人看的    file.close();#endif#if 0    //将刚刚写入文件的数据读进来    QFile file("../testDataStream.txt");    file.open(QIODevice::ReadWrite);    QDataStream dataStream(&file);    char *ch;    char *ch2;    int num;    QPoint pt;    dataStream>>ch>>ch2>>num>>pt;   //读数据,自动格式化    qDebug()<<ch<<ch2<<num<<pt;     //打印:中国 China 123456 QPoint(1,1)    file.close();#endif    //虚拟内存    QString _str = "../virtual.data";    QFile file(_str);    file.open(QIODevice::ReadWrite);//    file.seek(64*1024);     //为虚拟内存开辟64k的空间//    file.write("0");        //在最后一个字节处写一个字符//    file.close();           //空间开辟好了    file.resize(_str, 64*1024);     //注释掉的代码可以用着一行代码代替//    file.open(QIODevice::ReadWrite);    //理解关于文件映射的原理    uchar *puc = file.map(0, 64*1024);  //从0字节开始开辟64k内存    puc[0] = 'a';    puc[1] = 'b';    file.unmap(puc);        //关闭虚拟内存    file.close();    //结果:在上一层文件中新建一个64k大小的virtual.data文件,格式改成.txt后里边有a和b字符}int main(int argc, char *argv[]){    QApplication app(argc, argv);    MyWidget w;    w.show();    app.exec();}

文件打印结果都在注释中了!
其中有一个图的打印结果:

0 0
原创粉丝点击