QT--文本文件的读写(QFile、QTextStream)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
QT--⽂本⽂件的读写(QFile、QTextStream)
⼀、⽂本⽂件
⽂本⽂件是指纯⽂本格式存储的⽂件,例如:.cpp、.html、.xml⽂件等都是纯⽂本⽂件
⼆、QT纯⽂本⽂件读写函数
QT提供了两种读写纯⽂本⽂件的⽅法:
①QFile类的IODevice读写功能直接进⾏读写
②QFile和QTextStream结合起来,⽤流的⽅法进⾏⽂件读写
三、QFile类
功能:提供了⼀个⽤于读/写⽂件的接⼝,它可以⽤来读/写⽂本⽂件、⼆进制⽂件和 Qt 资源的 I/0 设备
构造函数
QFile()
QFile(const QString &name)
QFile(QObject *parent)
QFile(const QString &name, QObject *parent)
open函数
功能:⽤来打开⼀个⽂件对象
参数:决定⽂件以何种⽅式打开(同⽅式之间可以配合使⽤,中间⽤ | 隔开),QIODevice是Qt所有I/O设备的基础类,为QFIle等类提供⼀个抽象接⼝
QIODevice::ReadOnly //以只读的⽅式打开(⽂件不存在出错)
QIODevice::WriteOnly //以只写的⽅式打开,打开时⽂件内原内容清空(⽂件不存在则创建)
QIODevice::ReadWrite //以读写的⽅式打开⽂件
QIODevice::Append //已追加的⽅式打开⽂件,新写⼊⽂件的数据添加到⽂件尾部
QIODevice::Truncate //以重写的⽅式打开⽂件,⽂件打开时原有内容全部清空
QIODevice::Text //以⽂本的⽅式打开⽂件。
读取时,将'\n'翻译为换⾏符;写⼊时,将⾏结束符转换成本地格式
(如Windows下是'\r\n'):
bool QFile::open(OpenMode mode)
其它⽤于读写的函数:
close(); //关闭⽂件
read(); //读⽂件,参数为读取的长度⼤⼩(必填)
readLine(); //读取⼀⾏
readAll(); //读取所有
write(); //向⽂件中写⼊数据
atEnd(); //判断是否到达⽂件尾
seek(); //将⽂件指针定位到指定位置处
pos(); //获取⽂件指针当前位置
四、QTextStream类
功能:QTextStream与IO读写设备结合,为数据读写提供了⼀些⽅便的⽅法的类,以流的⽅式读写⽂件
QTextStream可以以QFile、QTemporaryFile、QBuffer、QTcpSocket、QUdpSocket等IO设备类结合使⽤
构造函数
QTextStream()
QTextStream(QIODevice *device)
QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite) QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)其他函数
//将QTextStream对象设定为是否⾃动识别Unicode编码(例如⽂本中有汉字时)
void QTextStream::setAutoDetectUnicode(bool enabled)
atEnd(); //判断是否到达⽂件末尾
readAll(); //读取全部内容
readLine(); //⼀次只读取⼀⾏内容
<<QString //向QTextStream流中写⼊内容
演⽰案例:
//输⼊⽂本流
QFile file("output.txt");
if(file.open(QFile::WriteOnly | QFile::Truncate))
{
QTextStream out(&file); //创建写⼊流
out << "PI:" << qSetFieldWidth(10) << left << 3.1415926;//写⼊数据
out << "\r\ninsert new line";//写⼊数据
}
file.close();
//输出⽂件流
QFile fileOpen("output.txt");
if(! fileOpen.open(QFile::ReadOnly | QIODevice::Text))
qDebug() << fileOpen.errorString();
QTextStream in(&fileOpen); //创建输出流
while(!in.atEnd())
{
QString oneLine = in.readLine(); //读取⼀⾏
qDebug() << oneLine;
}
五、演⽰案例
见⽂章:。