QFile文件处理
- QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。
- 处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。处理临时文件可以使用QTemporaryFile,获取信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher.
QTextStream的流操作符
QFile QTextStream操作文件示例:
新建控制台引用程序,编辑main函数,main.cpp添加头文件:
文件读取
//文件读取
QFile file("hello.txt");
if(file.open(QIODevice::ReadOnly)){
char buffer[100];
qint32 n;
n = file.readLine(buffer, sizeof(buffer));//返回-1表示失败
if(n != -1){ //成功
qDebug() << "长度:" << n << " 内容:" << buffer; //读取文件
}
file.close();
}else{
qDebug() << file.errorString();
}
文件写入
QFile dataFile;
dataFile.setFileName("data.txt");
if(dataFile.open(QFile::WriteOnly|QFile::Truncate)){
QTextStream out(&dataFile); //文件操作流
out.setRealNumberPrecision(3); //设置输出精度位数为3
out.setFieldWidth(10); //设置输出字段宽度为10
out.setFieldAlignment(QTextStream::AlignLeft); //设置左对齐
//普通方式写入
double dPI = 3.1415926;
out << QString("数据: ")
<< dPI ; //写入数据
//二进制方式写入
int age = 18;
out << QString("年龄: ")
<< bin //二进制方式
<< age; //写入数据
//十六进制方式写入
out << QString("年龄: ")
<< hex //十六进制方式
<< showbase //设置显示十六进制(0x))
<< age; //写入数据
file.close();
}
二进制读写操作
//写入二进制文件
QFile binFile("info.bat");
if(binFile.open(QFile::WriteOnly | QFile::Truncate)){
QDataStream out(&binFile);
out << QString("张三")
<< QDate::fromString("2004-02-02", "yyyy-MM-dd")
<< qint32(18);
binFile.close();
}else{
qDebug() << binFile.errorString();
}
//读取二进制文件
if(binFile.open(QFile::ReadOnly)) { //只读方式打开
QDataStream in(&binFile); //操作文件流
QString name;
QDate birthday;
qint32 age;
in >> name >> birthday >> age;
qDebug() << "姓名:" << name << " 出生日期:"<< birthday << " 年龄:" << age;
binFile.close();
}else{
qDebug() << binFile.errorString();
}