Qt笔记_18

来源:互联网 发布:知乎 360借壳江南嘉捷 编辑:程序博客网 时间:2024/06/05 10:50

输入输出

输入/输出设备

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。

原创粉丝点击