使用QFile类进行读写,使用Open函数打开文件,打开方式有:
QIODevice::NotOpen 0x0000 不打开
QIODevice::ReadOnly 0x0001 只读方式
QIODevice::WriteOnly 0x0002 只写方式,如果文件不存在则会自动创建文件
QIODevice::ReadWrite ReadOnly | WriteOnly 读写方式
QIODevice::Append 0x0004 此模式表明所有数据写入到文件尾
QIODevice::Truncate 0x0008 打开文件之前,此文件被截断,原来文件的所有数据会丢失
QIODevice::Text 0x0010 读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’
QIODevice::UnBuffered 0x0020 不缓存
第一种办法:QFile类的iodevice读写,即调用QIODevice类的函数
读:read、readall函数
写:write函数
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
//创建 QFile 对象,同时指定要操作的文件
QFile file("D:/demo.txt");
//对文件进行写操作
if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){
qDebug()<<"文件打开失败";
}
//向文件中写入两行字符串
file.write("C语言中文网\n");
file.write("http://c.biancheng.net");
//关闭文件
file.close();
//重新打开文件,对文件进行读操作
if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){
qDebug()<<"文件打开失败";
}
//每次都去文件中的一行,然后输出读取到的字符串
char * str = new char[100];
qint64 readNum = file.readLine(str,100);
//当读取出现错误(返回 -1)或者读取到的字符数为 0 时,结束读取
while((readNum !=0) && (readNum != -1)){
qDebug() << str;
readNum = file.readLine(str,100);
}
file.close();
return 0;
}
第二种办法:QFile + QTextStream 结合
读:readall、readline
写:<<文章来源:https://www.toymoban.com/news/detail-498578.html
写文件文章来源地址https://www.toymoban.com/news/detail-498578.html
void writeTxt()
{
// 文件位置
QFile file("test.txt");
if(!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
{
return;
}
// 文件流
QTextStream stream(&file);
// 输入内容
stream << "你好";
stream << "111";
file.close();
}
std::vector<QString> readTxt()
{
// 返回值
std::vector<QString> strs;
// 读取文件位置
QFile file("test.txt");
if(!file.open(QIODevice::ReadOnly))
{
return strs;
}
// 文件流
QTextStream stream(&file);
// 一行一行的读
while(!stream.atEnd())
{
QString line = stream.readLine();
strs.push_back(line);
}
file.close();
return strs;
}
到了这里,关于qt读写文本文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!