普通TxT文本文件读取
这里只使用qt里普通的控制台来测试文件读写操作
txt文件读取(以字符数组形式读取)
//读取文件首先我们需要一个文件对象
QFile file("data.txt");//创建一个文件对象,并且初始化文件对象
if(file.open(QIODevice::ReadOnly)){//以只读的方式打开文件
//第一种方式就是利用字符数组来读取
char buffer[100];
qint32 n=file.readLine(buffer,sizeof(buffer));
//因为readline函数读取文件内容成功的话就会返回文件的字节数,如果失败就会返回-1
if(n!=-1){
qDebug()<<"长度:"<<n
<<"内容:"<<buffer
<<endl;
}
file.close();
}else{
qDebug()<<file.errorString();
}
需要注意的是,我们读取文件当然必须得存在这个文件,这样读取才会成功。还有一点需要注意的,就是可能文件已经存在了,但是上面的代码还是提示找不到对应文件,可能是Qt设置的运行目录与文件存在的位置不匹配,这样就会读取失败
txt文件写入
QFile file1("data1.txt");
if(file1.open(QIODevice::WriteOnly|QIODevice::Truncate)){
QDataStream out(&file1);
out<<QString("周杰伦")
<<QDate::fromString("1979-01-18","yyyy-MM-dd")
<<(qint32)41;
file1.close();
}else{
qDebug()<<file1.errorString()<<endl;
}
这里提一下的就是写入利用数据流QDataStream来实现写入,打开失败的时候可以调用errorString的方法实现打印调试信息。
txt文件读取(第二种方式以数据流读取)
file1.setFileName("data1.txt");
if(file1.open(QIODevice::ReadOnly)){
//第二种方式就是一数据流读取文件内容
QDataStream in(&file1);
QString name;
QDate birthday;
qint32 age;
in>>name>>birthday>>age;
qDebug()<<name<<birthday<<age;
file1.close();
}else{
qDebug()<<file1.errorString();
}
读取文件信息的时候,需要与读取的文件数据类型相匹配,提下的就是如果在写文件的时候没有自己要打开的文件,编译器会自动为我们创建一个这样的文件。
读写文件也不仅仅是局限一个txt文件,还可以是二进制文件bat亦或者是其他的文件。