Qt笔记_输入输出

45 篇文章 0 订阅

输入输出

输入/输出设备

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。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值