当前位置: 首页 > wzjs >正文

网站开发后端是什么网页制作软件推荐

网站开发后端是什么,网页制作软件推荐,建设银行网站怎么基本转个人,深圳南山企业网站建设文件操作 1. 文件操作类简介文件系统 2. 基本文件操作QFile使用QFileInfo使用 3. 二进制文件读写(数据流)QDataStream&QIODevice 4. 文本文件读写文件内容读取 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文…

文件操作

  • 1. 文件操作类简介
    • 文件系统
  • 2. 基本文件操作
    • QFile使用
    • QFileInfo使用
  • 3. 二进制文件读写(数据流)
    • QDataStream&QIODevice
  • 4. 文本文件读写
    • 文件内容读取

文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。

1. 文件操作类简介

下面是 I/O 设备的类图:
在这里插入图片描述

  1. QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;
  2. QFileDevice:提供了有关文件操作的通用实现。
  3. QFlie:访问本地文件或者嵌入资源;
  4. QTemporaryFile:创建和访问本地文件系统的临时文件;
  5. QBuffer:读写QbyteArray, 内存文件;
  6. QProcess:运行外部程序,处理进程间通讯;
  7. QAbstractSocket:所有套接字类的父类;
  8. QTcpSocket:TCP协议网络数据传输;
  9. QUdpSocket:传输 UDP 报文;
  10. QSslSocket:使用 SSL/TLS 传输数据;

文件系统

  1. 顺序访问设备
    是指它们的数据只能访问一遍:从头走到尾,从第一个字节开始访问,直到最后一个字节,中途不能返回去读取上一个字节,这其中,QProcess、QTcpSocket、QUdpSoctet和QSslSocket是顺序访问设备。
  2. 随机访问设备:
    可以访问任意位置任意次数,还可以使用QIODevice::seek()函数来重新定位文件访问位置指针,QFile、QTemporaryFile和QBuffer是随机访问设备。

2. 基本文件操作

在所有的 I/O 设备中,文件 I/O 是最重要的部分之一。因为我们大多数的程序依旧需要首先访问本地文件。QFile提供了从文件中读取和写入数据的能力。

通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后,使用setFileName()来修改。QFile需要使用 / 作为文件分隔符,它会自动将其转换成操作系统所需要的形式。例如 C:/windows 这样的路径在 Windows 平台下同样是可以的。

QFile主要提供了有关文件的各种操作,比如打开文件、关闭文件、刷新文件等。
使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数。
有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取,而不是自己分析文件路径字符串。

QFile使用

文件内容读取和文件信息获取:

//使用 QFile 创建了一个文件对象。
//这个文件名字是 in.txt。如果你不知道应该把它放在哪里,可以使用QDir::currentPath()来获得应用程序执行时的当前路径。
//只要将这个文件放在与当前路径一致的目录下即可。QFile file("in.txt");//使用open()函数打开这个文件,打开形式是只读方式,文本格式。if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {qDebug() << "Open file failed.";return -1;} else {//利用 while 循环,将每一行读到的内容输出。while (!file.atEnd()) {qDebug() << file.readLine();  }}QFileInfo info(file);qDebug() << info.isDir();qDebug() << info.isExecutable();qDebug() << info.baseName();qDebug() << info.completeBaseName();qDebug() << info.suffix();

QFileInfo使用

  1. isDir() 检查该文件是否是目录(在操作系统这种,文件夹是一种特殊的文件,我们可以通过QFile来打开一个文件夹或者路径,这个函数返回值就是判断他是不是一个文件夹或路径);
  2. isExecutable() :检查该文件是否可以被执行。
  3. baseName() :可以直接获得文件名;
  4. completeBaseName() :获取完整的文件名
  5. suffix() :直接获取文件后缀名。
  6. completeSuffix():获取完整的文件后缀
QFileInfo fi("/tmp/archive.tar.gz");
QString base  = fi.baseName();  // base = "archive"
QString base  = fi.completeBaseName();  // base = "archive.tar"
QString ext   = fi.suffix();  // ext = "gz"
QString ext   = fi.completeSuffix();  // ext = "tar.gz"

3. 二进制文件读写(数据流)

QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流,这种流完全不依赖于底层操作系统、CPU 或者字节顺序(大端或小端)。例如,在安装了 Windows 平台的 PC 上面写入的一个数据流,可以不经过任何处理,直接拿到运行了 Solaris 的 SPARC 机器上读取。由于数据流就是二进制流,因此我们也可以直接读写没有编码的二进制数据,例如图像、视频、音频等。
QDataStream既能够存取 C++ 基本类型,如 int、char、short 等,也可以存取复杂的数据类型,例如自定义的类。实际上,QDataStream对于类的存储,是将复杂的类分割为很多基本单元实现的。
结合QIODevice,QDataStream可以很方便地对文件、网络套接字等进行读写操作。我们从代码开始看起:

QFile file("file.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << QString("the answer is");
out << (qint32)42;
file.close(); // 如果不想关闭文件,可以使用 file.flush();
  • 在这段代码中,我们首先打开一个名为 file.dat 的文件然后,我们将刚刚创建的file对象的指针传递给一个QDataStream实例out。
  • 好使用 Qt 整型来进行读写,比如程序中的qint32。这保证了在任意平台和任意编译器都能够有相同的行为。
  • 如果不关闭文件,你会得到一个空白的 file.dat,并没有写入任何数据。这是因为我们的file没有正常关闭。为性能起见,数据只有在文件关闭时才会真正写入。因此,我们必须在最后将文件关闭。
  • 必须按照写入的顺序,将数据读取出来。顺序颠倒的话,程序行为是不确定的,严重时会直接造成程序崩溃。
QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
QString str;
qint32 a;
in >> str >> a;

QDataStream&QIODevice

QIODevice提供了read()、readLine()之类的函数。QDataStream提供流的形式,性能上一般比直接调用原始 API 更好一些。

QFile file("file.dat");
file.open(QIODevice::ReadWrite);QDataStream stream(&file);
QString str = "the answer is 42";stream << str;

4. 文本文件读写

二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。

QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对开发人员是透明的。它也会将换行符进行转换,同样不需要自己处理。QTextStream使用 16 位的QChar作为基础的数据存储单位,同样,它也支持 C++ 标准类型,如 int 等。实际上,这是将这种标准类型与字符串进行了相互转换。

QTextStream同QDataStream的使用基本一致。

data.open(QFile::WriteOnly | QIODevice::Truncate)

文件打开的类型有:

枚举值描述
QIODevice::NotOpen未打开
QIODevice::ReadOnly以只读方式打开
QIODevice::WriteOnly以只写方式打开
QIODevice::ReadWrite以读写方式打开
QIODevice::Append以追加的方式打开,新增加的内容将被追加到文件末尾
QIODevice::Truncate以重写的方式打开,在写入新的数据时会将原有 数据全部清除,游标设置在文件开头。
QIODevice::Text在读取时,将行结束符转换成 \n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 \r\n
QIODevice::Unbuffered忽略缓存

文件内容读取

在使用QDataStream的时候,这样的代码很方便,但是使用了QTextStream时却有所不同。当使用QDataStream写入的时候,实际上会在要写入的内容前面,额外添加一个这段内容的长度值。而以文本形式写入数据,是没有数据之间的分隔的。因此,使用文本文件时,很少会将其分割开来读取,而是使用诸如使用:

QTextStream::readLine();//读取一行
QTextStream::readAll();//读取所有文本

这种函数之后再对获得的QString对象进行处理。

默认情况下,QTextStream的编码格式是 Unicode,如果我们需要使用另外的编码,可以使用:

stream.setCodec("UTF-8");

这样的函数进行设置。

http://www.dtcms.com/wzjs/487417.html

相关文章:

  • 宁波网站建设股份公司全球十大搜索引擎排名及网址
  • 公司企业网站开发百度seo建议
  • 上海做网站 公司 哪家好如何线上推广引流
  • 做模型的网站有哪些管理人员课程培训
  • 河南住房和城乡建设厅网站特种中国新闻最新消息
  • 哪个网站微博做的最好十大短视频平台排行榜
  • 台州网站建设 网站制作 网站设计搜索引擎营销实训报告
  • 400网站建设办公平台优化
  • c2c网站类型关键词优化排名软件哪家好
  • 线上运营推广工作内容seo技术优化服务
  • 网站建设无广告说到很多seo人员都转行了
  • 给女朋友做的网站晋城今日头条新闻
  • 自建网站百度查询域名注册信息
  • 唐山做网站那家好网站推广常用的方法
  • 有哪些网站可以做任务赚钱要怎么网络做推广
  • 网站建设规划书河北网店推广渠道有哪些
  • 瓯海网站建设中国企业500强排行榜
  • 三九手机网官网优化服务公司
  • 莱芜高端网站设计建设百度新闻官网
  • dw网站管理与建设免费建自己的网址
  • vps的网站打不开百度知道提问首页
  • 美食网站网页设计优化教程
  • 云南营销型网站建设百度广告代理公司
  • 廊坊网站快速排名优化注册推广赚钱一个80元
  • 织梦系统怎么做网站网络推广员为什么做不长
  • 公司网站建设沈阳广州关于进一步优化疫情防控措施
  • dw做网站链接数据库2023年国家免费技能培训
  • 无锡食品网站设计百度指数搜索榜度指数
  • 建动画网站需要多少钱软件外包公司有前途吗
  • 重庆外贸网站建设情感式软文广告