文件操作QFile和QDataStream

一、QFlie文件读写
  #include<QFile>
  #include<QFileDialog>//文件对话框
1、读文件

 1     QString path = QFileDialog::getOpenFileName(this,//指定父对象
 2                 "open", "../", "TXT(*.txt)");//对话框的名字        路径
 3     if(!path.isEmpty())
 4     {
 5         QFile file(path);//创建文件对象
 6
 7         //打开文件,只读方式
 8         if(file.open(QIODevice::ReadOnly))
 9         {
10 #if 0
11             QByteArray array = file.readAll(); //默认只识别utf8编码,可以通过文本流读其他的编码
12             //显示到编辑区
13             ui->textEdit->setText(QString(array));
14 #endif
15             QByteArray array;
16             while( file.atEnd() == false)
17             {
18                 array += file.readLine();//读一行
19             }
20             ui->textEdit->setText(array);
21         }
22         file.close();
23     }

2、写文件

 1     QString path = QFileDialog::getSaveFileName(this, "save", "../", "TXT(*.txt)");
 2     if(!path.isEmpty())
 3     {
 4         QFile file; //创建文件对象
 5         //关联文件名字
 6         file.setFileName(path);
 7         if(file.open(QIODevice::WriteOnly))//只写
 8         {
 9             QString str = ui->textEdit->toPlainText();//获取编辑区内容
10             //写文件 QString -> QByteArray
11             file.write(str.toUtf8());
12             //file.write(str.toStdString().data());//QString->c++ string->char *
13             //file.write(str.toLocal8Bit());//转换为本地平台编码
14         }
15         file.close();
16     }

二、QFlieInfo获取文件信息
QFileInfo info(path);
qDebug() << "文件名字:" << info.fileName().toUtf8().data();//转为UTF-8编码 转为char*字节数组
qDebug() << "文件后缀:" << info.suffix();
qDebug() << "文件大小:" << info.size();
qDebug() << "文件创建时间:" <<info.created().toString("yyyy-MM-dd hh:mm:ss");
//2016-01-04 15:13:00 y年 M月 d日...
//create()的返回值是QDateTime

三、QDataStream 数据流

  处理二进制流  音频、图像等都可以

1、写文件

1     QFile file("../test.txt");//创建文件对象    QDataStream也用QFile创建文件对象
2     if(file.open(QIODevice::WriteOnly))
3     {
4         //创建数据流,和file文件关联
5         //往数据流中写数据,相当于往文件里写数据
6         QDataStream stream(&file);
7         stream << QString("主要看气质") << 250;
8         file.close();
9     }

2、读文件

 1     #define cout qDebug() << "[" << __FILE__ <<":" << __LINE__ << "]"
 2     QFile file("../test.txt");
 3     if(file.open(QIODevice::WriteOnly))
 4     {
 5         QDataStream stream(&file);
 6         QString str;
 7         int a;
 8         stream >> str.totf8().date() >> a;//读文件的顺序和写文件的顺序一样
 9         cout << str.toUtf8().data() << a;
10         file.close();
11     }

四、QTextStream文本流//可以指定编码进行读写

1、写文件

 1     QFile file();
 2     file.setFileName("../test.txt");
 3     if(file.open(QIODevice::WriteOnly))
 4     {
 5         /*    也可以和QDataStream的用法一样    */
 6
 7         QTextStream stream(&file);
 8         stream.setCodec("UTF-8");//指定编码
 9         stream << QString("主要看气质") << 250;//写文件
10         file.close();
11     }

2、读文件

 1 QFile file("../demo.txt");
 2     if(file.open(QIODevice::ReadOnly))
 3     {
 4         QTextStream stream(&file);
 5         //指定编码
 6         stream.setCodec("UTF-8");
 7         #if 0//error
 8           QString str = stream.readAll();
 9           ui->textEdit->setText(str);
10           QString str;
11           int a;
12           stream >> str >> a;
13           cout << str.toUtf8().data() << a;//str 会取出所有的数据,然后a的值为0
14         #endif
15
16         QString str = stream.readAll();
17         ui->textEdit->setText(str);
18         file.close();
19     }
 

原文地址:https://www.cnblogs.com/wangbin-heng/p/9521048.html

时间: 2024-07-29 13:56:19

文件操作QFile和QDataStream的相关文章

Qt之文件操作 QFile

原地址:http://blog.csdn.net/liuhongwei123888/article/details/6084761 今天学习QT的文件操作 1.QIODevice直接继承自QObject QIODevice类是输入/输出设备的基类. QIODevice为设备提供了公共实现和抽象接口用于读写块数据.QIODevice是一个抽象类,不能被实例化. 被Q3Socket,Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSocket,Q

QT开发(二十四)——QT文件操作

QT开发(二十四)--QT文件操作 一.QT文件操作简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同. 1.IO操作的主要函数接口 打开设备:bool open(OpenMode mode) 读取数据:QByteArray read(qint64 maxSize) 写入数据:qint64 write(const QByteArray & byteArray) 关闭设备:void close() IO操作的本质是连续

第三十二课、Qt中的文件操作

一.Qt中的IO操作 1.Qt中IO操作的处理方式 (1).Qt通过统一的接口简化了文件与外部设备的操作方式 (2).Qt中的文件被看做是一种特殊的外部设备 (3).Qt中的文件操作与外部设备操作相同 2.IO操作中的关键函数接口 注意:IO操作的本质:连续存储空间的数据读写 3.Qt中IO设备类型 (1).顺序存储设备:只能从头开始顺序读写数据,不能指定数据的读写位置(串口) (2).随机存储设备:可以定位到任意位置进行数据读写(seek function函数)(文件) 4.Qt中IO设备 的

第32课 Qt中的文件操作

1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操作中的关键函数接口——IO操作的本质:连续存储空间的数据读写 ①打开设备:bool open(OpenMode mode); ②读取数据:QByteArray read(qint64 maxSize); ③写入数据:qint64 write(const QByteArray& byteArray);

Qt之课外实践——文件操作(简单清道夫)

说明:这个小项目是关于文件操作的.主要的功能有:重复文件的查找(根据文件的大小),说白了,就是讲大小相同的文件在一起显示出来,供用户自由的选择删除.这个360云盘里的文件去重还差的很远.还有空文件夹的查找(我们的思想是:如果一个目录下面只有.和..2个目录,则,这个文件夹就是空的.但是我们不包含文件里面套有空文件夹.),以及垃圾文件的查找(根据文件的后缀,简单判断的.). 窗体主界面: 首先程序运行前,会弹出提示对话框. 代码如下: mainwindow.h #ifndef MAINWINDOW

Qt笔记——QFile,QDataStream,QTextStream

QFile #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void on_readButton_clicked(); void on_writeBut

22内存文件操作

前面介绍了基本文件操作.数据流文件操作和文本文件操作.本次简单介绍内存文件操作.内存文件本质就是建立一块公共内存区域,可以往里读.写. 下面我们使用一段代码来看看QBuffer的有关操作: QBuffer memFile();               //内存文件对象 //打开 bool bIsOk=memFile.open(QIODevice::WriteOnly); if(bIsOk==true) { memFile.write("1111111111"); memFile.w

Qt--软件开发流程简介、Qt中的文件操作

一.软件开发流程 Q.什么是软件开发流程?1.通过一系列步骤保证软件的顺利完成2.软件产品在生命期内的管理方法学软件开发流程的本质1.开发流程与具体技术无关2.开发流程是开发团队必须遵守的规则常见的开发流程--即兴.瀑布.增量.螺旋.敏捷等A.即兴模型1.与最终用户交流后立即开始进行开发2.没有需求分析和需求发掘的过程3.没有整体设计以及规划的过程4.没有相关软件文档,维护性差B.瀑布模型1.通过自上而下的步骤进行软件开发2.每个开发步骤都是不可逆的C.增量模型1.将系统能分解为互不重叠的子功能

Python 文件操作

操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读: 不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,