输入输出
输入/输出设备
QIODevice类是所有I/O设备的基础接口类,为QFile、QBuffer、QTcpSocket等支持读/写数据块的设备提供了一个抽象接口。
QFile类提供了用于读写文件的接口。
-
一个文件可以使用open()打开,close()关闭,flush()刷新。
-
文件的数据读写使用QDataStream或者QTextStream,也可以使用继承自QIODevice类的函数,例如read(),readLine(),readAll()和write(),还有一次只操作一个字符的getChar()、putChar()、ungetChar()。
-
size()获取文件的大小。
-
seek()来定位到文件的位置。
-
pos()来获取当前的位置。
-
atEnd()判断是否到达了文件尾。
####QFileInfo类提供了与系统无关的文件信息。 -
isRelative()判断一个QFileInfo对象使用的是相对路径还是绝对路径
-
makeAbsolute()将一个相对路径转换为绝对路径
-
setFile()设置文件
-
exists()查看文件是否存在
-
size()获取文件大小
-
文件的类型使用isFile()、isDir()、isSymLink()来获取
-
symLinkTarget()返回符号链接指向的文件的名称
-
path()和fileName()获取文件的路径和文件名
-
baseName()获取文件名中的基本名称
-
suffix()获取文件名的后缀
-
completeSuffix()获取复合后缀
-
文件日期使用created()、lastModified()、lastRead()来返回
-
访问权限使用isReadable()、isWritable()、isExecutable()来获取
-
文件所有权使用owner()、ownerId()、group()和groupId()来获取
-
permission()将文件的访问权限和所有权一次性读取出来
#include <QCoreApplication>
#include <QFileInfo>
#include <QStringList>
#include <QDateTime>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 以只写方式打开,如果文件不存在,那么会创建该文件
QFile file("file.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
qDebug() << file.errorString();
file.write("helloQt!\nyafeilinux");
file.close();
// 获取文件信息
QFileInfo info(file);
qDebug() << QObject::tr("绝对路径:") << info.absoluteFilePath() << endl
<< QObject::tr("文件名:") << info.fileName() << endl
<< QObject::tr("基本名称:") << info.baseName() << endl
<< QObject::tr("后缀:") << info.suffix() << endl
<< QObject::tr("创建时间:") << info.created() << endl
<< QObject::tr("大小:") << info.size();
// 以只读方式打开
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
qDebug() << file.errorString();
qDebug() << QObject::tr("文件内容:") << endl << file.readAll();
qDebug() << QObject::tr("当前位置:") << file.pos();
file.seek(0);
QByteArray array;
array = file.read(5);
qDebug() << QObject::tr("前5个字符:") << array
<< QObject::tr("当前位置:") << file.pos();
file.seek(15);
array = file.read(5);
qDebug() << QObject::tr("第16-20个字符:") << array;
file.close();
return a.exec();
}
QTemporaryFile类可以安全地创建一个唯一的临时文件
调用open()函数时便会创建一个临时文件,销毁QTemporaryFile对象时,该文件会被自动删除。
文本流和数据流
QTextStream类提供了一个方便的接口来读写文本,可以在QIODevice/QByteArray和QString上进行操作。
示例Find File Example。