QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。
处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。处理临时文件可以使用QTemporaryFile。
文本文件:QTextStream的流操作符
操作符 |
作用描述 |
|
bin |
设置读写的整数为 二进制数 |
|
oct |
设置读写的整数为 八进制数
扫描二维码关注公众号,回复:
13570024 查看本文章
|
|
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();
}