QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。
处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。处理临时文件可以使用QTemporaryFile。
文本文件:QTextStream的流操作符
操作符 | 作用描述 |
|
bin | 设置读写的整数为 二进制数 |
|
oct | 设置读写的整数为 八进制数 |
|
dec | 设置读写的整数为十进制数 |
|
hex | 设置读写的整数为十六进制数 |
|
showbase | 强制显示进制前缀,如十六进制(0x)、八进制(0)、二进制(0b) |
|
forcesign | 强制显示符号(+、-) |
|
forcepoint | 强制显示小数点 |
|
noshowbase | 强制不显示前缀 |
|
noforcesign | 强制不显示符号 |
|
uppercasebase | 显示大写的进制前缀 |
|
lowercasebase | 显示小些的进制前缀 |
|
uppercasedigits | 用大写字母表示 |
|
lowercasedigits | 用小写字母表示 |
|
fixed | 固定小数点表示 |
|
scientific | 科学计数法表示 |
|
left | 左对齐 |
|
right | 右对齐 |
|
center | 居中 |
|
endl | 换行 |
|
flush | 清除缓冲 |
|
读-示例代码:
QFile file("hello.txt");if (file.open(QIODevice::ReadOnly)){char buffer[256];qint32 n = file.readLine(buffer, 256);if (n>-1){qDebug()<<"长度: "<<n<< "内容: "<< buffer;}file.close();}else{qDebug() << file.errorString();}
写-示例代码
QFile data("data.txt");int di = 100;float dPI = 3.14;if (data.open(QIODevice::WriteOnly|QIODevice::Truncate)){QTextStream out(&data);out.setRealNumberPrecision(3);//设置整数精度out.setFieldWidth(10);out << di<< dPI;data.close();}else{qDebug() << data.errorString();}
二进制文件:QDataStream类
读-示例代码
QFile info("info.bat");if (info.open(QIODevice::ReadOnly)){QDataStream in(&info);QString name;QDate date;in >> name >>date;qDebug() << name << " " << date;}else{qDebug() << info.errorString();}
写-示例代码
QFile info("info.bat");//写if (info.open(QIODevice::WriteOnly|QIODevice::Truncate)){QDataStream out(&info);out << QString("孙悟空")<< QDate::fromString("2000-10-10", "yyyy-MM-dd");info.close();}else{qDebug() << info.errorString();}