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

网站后来功能重庆万州网站建设报价

网站后来功能,重庆万州网站建设报价,洛阳网站改版维护公司,重庆丰都建设局网站目录 一、Qt文件系统 1.Qt文件系统的介绍 2.Qt文件类 二、Qt文件的操作 1.文件的打开 2.文件的读写操作 3.关闭操作 4.接口使用案例 5.获取文件的相关属性 三、文件的分类 1.文本文件 2.二进制文件 3.二者的区别 一、Qt文件系统 1.Qt文件系统的介绍 文件操作是所…目录 一、Qt文件系统 1.Qt文件系统的介绍 2.Qt文件类 二、Qt文件的操作 1.文件的打开 2.文件的读写操作 3.关闭操作  4.接口使用案例 5.获取文件的相关属性 三、文件的分类 1.文本文件 2.二进制文件 3.二者的区别 一、Qt文件系统 1.Qt文件系统的介绍 文件操作是所有开发程序和开发语言必不可少的一个重要的部分无论是C/C、还是系统级别操作等提供了一套完整的文件操作接口Qt作为了一个通用开发库也必须提供了跨平台的文件操作能力。Qt中提供了很多文件的类通过这些类能够对文件系统进行快速的操作了。 C语言标准库C标准库Linux系统调用打开文件fopen函数fstream类open函数读取文件fread函数operator成员函数read函数写入文件fwrite函数operator()成员函数write函数关闭文件fclose函数close成员函数close函数 而且Windows系统下也会有Windows的一套系统调用接口去进行文件操作那么不管是不同平台下还是语言层面都有很多对文件的操作为什么Qt还要自己去弄一套自己的文件操作呢因为Qt的诞生节点有关诞生的时候C还有没完整的标准化概念所以Qt自己弄了一套方案。再编写Qt程序的时候更推荐Qt自己提供的一套文件操作因为QString等Qt自己的类和自己的文件操作配合会更方便一些。当然也可以使用上述的其他体系去实现文件操作。 2.Qt文件类 在Qt中的文件操作中核心的无非也就是打开文件、读写文件和关闭文件的操作。Qt提供了一个QFile类该类就可以实现上述的操作和对文件的管理。OFile类继承自OFileDevice类该类中就提供了文件交互操作的底层功能。QFileDevice类的父亲是QIODeviceQIODevice的父亲就是所有类的祖先QObject类。 QIODevice类是Qt中所有的输入输出设备的基础类磁盘文件、网络通信的Socket套接字、串口、蓝牙等等都是属于输入输出型设备所以都是继承于QIODevice类。 类名介绍QFile用于文件操作和文件读写的类QSaveFile用于安全保存文件的类使用该类对象保存文件的时候会先将数据写入一个临时文件成功提交折后才会将数据写入最终的文件当中如果保存过程中有错误的话临死文件的内容不会写入最终文件保证最终文件中不会出现数据残缺或丢失的问题也就是说如果写入失败也会保留原有的数据。在保存比较大型的文件或者复杂格式的文件可以使用这个类。QTemporaryFile用于创建临时文件的类可以创建出一个唯一的临时文件该QTemporaryFile对象销毁的时候临时文件也就销毁了QTcpSocket、QUdpSocket实现了TCP和UDP通信的类QSerialPort实现了串口通信的类通过该类可以实现计算机与串口设备的通信。串口是一个比较老的通信方式一般是在嵌入式系统上用的较多。QBluetoochSocket用于蓝牙通信的类QPrecess用于启动外部程序的类可以给程序传递参数内容。相当于fork、exec操作的封装。QBuffer是以一个QByteArray对象作为缓冲区对这个缓冲区进行I/O操作的类。相当于一个缓冲区类 二、Qt文件的操作 1.文件的打开 QFile::QFile(const QString name);                                                  //创建QFile对象 virtual bool open(QIODevice::OpenMode mode) override;             //打开文件 Qt中打开文件之前是需要创建一个QFile对象的并传递一个文件路径之后配合着QFile类内部的open函数进行打开文件。open打开文件的函数传递的参数是文件的打开方式也就是读方式、写方式、追加写等等方式不用传递文件路径了因为QFile对象内部已经记录了管理的文件所在的路径了。OpenMode是一个枚举类型枚举出了一些打开文件的方式。 QFile类中也提供了其他的open函数但是没有上述的方便。需要传递C语言标准库中的文件对象FILE或者底层的文件描述符。 bool open(FILE *fh, QIODevice::OpenMode mode,                                     QFileDevice::FileHandleFlags handleFlags DontCloseHandle); bool open(int fd, QIODevice::OpenMode mode,                                     QFileDevice::FileHandleFlags handleFlags DontCloseHandle); 2.文件的读写操作 读取操作函数 // 尽可能的读取文件内容 qint64 read(char* data, qint64 maxSize); QByteArray read(qint64 maxSize);   // 一次性将文件内容都读取出来 QByteArray readAll(); // 读取一行数据 qin64 readLine(char* data, qint64 maxSize); QByteArray readLine(qint64 maxSize 0); QByteArray返回值是一个字符数组是Qt对于字符数组的封装QString类中重载了operator 函数可以传递该QByteArray参数所以很容易就可以转化为QString类型的字符串了。但是前提是打开的文件一个文本文件如果是二进制文件的话就会出现一些问题了。 写入操作函数 qint64 write(const char* data, qint64 maxSize); qint64 write(const char* data); qint64 write(const QByteArray byteArray); 3.关闭操作  virtual void close(); 一定要在操作文件之后关闭文件从底层来说系统的文件描述符表有上限一直运行的程序如果不关闭的话文件描述符越开越多就会占满文件描述符表了就会出问题。而且每一个文件描述符都会关联一个strutc file系统也要将这些struct file结构体维护起来。还有就是如果不关闭的话文件就会一直处于打开状态在内存中系统还要维护这些打开的文件。所以说文件操作完毕之后一定要关闭文件。 4.接口使用案例 案例实现打开文件和保存文件的操作。 该案例是模拟了一个记事本的操作在菜单栏中提供了打开文件和保存文件的操作打开文件关联的槽函数是将指定路径文件的内容读取出来放入到多行输入文本框中保存文件关联的槽函数是将文本框中的内容写入到指定路径的文件当中。 在保存文件的时候需要QStrin的字符串文本类型重写转化为QByteArray类型Qt中也提供了很多的转换函数。这里我们发现会有很多种转换的函数而且需要我们自己手动转化这是为什么呢QByteArray存放的是我们打开的文件存储的内容原始字节表示形式。而QString字符串是根据特定的编码格式将原始字节数据转化为了特定的文本格式了。        当QByteArray转化为QStirng的时候默认是使用utf8编码方式进行转化。当然如果我们想要 转化为其他形式的话也是需要使用Qt内置的一些接口进行转换的。当然前提是该文本类型不是二进制类型否则二进制类型文件转化后会成一堆乱码。在打开文件的时候一般都是打开的文本文件所以默认使用的utf8的转换方式。而QString转化为QByteArray的时候系统不知道我们想要保存的文件是什么类型而且存放二进制文件和文本文件的几率基本上是一样的。所以说没有设置默认的存储类型而是需要我们自己去设置。 QString转换QByteArray函数 const QString text edit-toPlainText(); file.write(text.toUtf8()); QByteArray转换QString函数 QByteArray latin1Array Hello, World; QString str2 QString::fromLatin1(latin1Array);QByteArray local8BitArray Hello, 世界; QString str3 QString::fromLocal8Bit(local8BitArray); 案例代码  //edit是一个QTextEdit类型的成员函数定义在mainwindow.h文件当中#include mainwindow.h #include ui_mainwindow.h #include QFileDialogMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//修改窗口标题this-setWindowTitle(记事本);//创建菜单栏QMenuBar* menubar this-menuBar();this-setMenuBar(menubar);//添加菜单QMenu* menu new QMenu(文件);menubar-addMenu(menu);//添加菜单项QAction* action1 new QAction(打开文件);QAction* action2 new QAction(保存文件);menu-addAction(action1);menu-addAction(action2);//创建一个输入框edit new QTextEdit();//设置输入框的字体QFont font;font.setPixelSize(20);edit-setFont(font);//将窗口的中心部件设置为多行输入框this-setCentralWidget(edit);//将菜单项绑定槽函数connect(action1, QAction::triggered, this, MainWindow::openfile);connect(action2, QAction::triggered, this, MainWindow::savefile); }MainWindow::~MainWindow() {delete ui; }//打开文件 void MainWindow::openfile() {// 首先弹出一个选择文件的对话框QString path QFileDialog::getOpenFileName(this);// 把选择的文件名显示到状态栏里面QStatusBar* statusbar this-statusBar();statusbar-showMessage(path);//根据用户选择的路径打开文件QFile file(path);bool ret file.open(QIODevice::ReadOnly);if(ret false){statusbar-showMessage(path 打开失败);return;}//读取文件写入输入框QString text file.readAll();//关闭文件file.close();//把读取的文件内容写入到输入框中。edit-setText(text); }//保存文件 void MainWindow::savefile() {//弹出一个保存文件对话框选择保存的路径QString path QFileDialog::getSaveFileName(this);//在状态栏中显示文件名QStatusBar* statusbar this-statusBar();statusbar-showMessage(path);//根据选择的路径构造一个QFile对象并打开文件QFile file(path);bool ret file.open(QIODevice::WriteOnly);if(ret false){statusbar-showMessage(保存失败);return;}//获取输入框的内容const QString text edit-toPlainText();//写入到文件当中file.write(text.toUtf8());//关闭文件file.close(); } 5.获取文件的相关属性 在Qt当中FileInfo类可以获取到Qt文件的相关属性。对于该操作在C/C标准库中先前是没有相关此操作的如果我们想要获得文件的属性就需要进系统调用进行获取直到C17才引入了相关的模块提供了此功能。所以Qt就自己设计了一套获取文件相关属性的操作。 使用案例 void Widget::on_pushButton_clicked() {//弹出对话框选择文件并获取文件信息QString path QFileDialog::getOpenFileName(this);//构造QFileInfo对象QFileInfo fileinfo(path);ui-textEdit-append(文件名: fileinfo.fileName());ui-textEdit-append(文件后缀: fileinfo.suffix());ui-textEdit-append(文件路径: fileinfo.path());ui-textEdit-append(文件大小: QString::number(fileinfo.size()));ui-textEdit-append(文件类型是否是普通文件: QString(fileinfo.isFile() true ? 是 : 不是));ui-textEdit-append(文件类似是否是一个目录: QString(fileinfo.isDir() true ? 是 : 不是)); }更多的QFileInfo内置的函数以及使用可以查看帮助文档。  三、文件的分类 1.文本文件 文本文件是由字符序列组成的文件内容通常包含的是人类可以看懂的文本内容。这些字符按照一定的编码方式进行存储UTF8、ASCII等每个字符占用一个或者多个字节。其实这些字符底层也一定是一堆二进制数字但是通过特定的编码每个字符都会对应一个特定的二进制序列会将这些二进制数据和我们能看懂的字符进行相互转化。 文本文件常用于存储配置信息、源代码、日志文件、CSV 文件等。例如配置文件.ini通常存储键值对如keyvalue的形式CSV 文件存储表格数据以逗号分隔不同的字段。 2.二进制文件 二进制文件存储的就是原始的二进制数据了不是字符序列大多数都是一些图像、视频和音频数据、数据库文件以及可执行文件等内容。这些数据不是并没有经过特定的编码格式排列所以说并非是我们可以看懂的。通过一些特定的编码方式进行转化的话转化后的也是一些乱码的字符数据。 3.二者的区别 可读性文本文件是给人类读的所以可读性一定是很好的而二进制文件的话通常是给计算机看的计算机会解析成一些图片、音频或者执行一些程序。存储效率存储效率来说的话文本文件的存储时需要根据使用的编码方式进行特定格式的存储而且一个文字可能会占用多个字节例如UTF8中一个英文字符占用一个字节而对于一些汉字来说要占用多个。而二进制文件的存储来说不会进行字符编码直接存储原始数据即可存储效率比较高。对于一些需要存储大量数据的场景如存储音频样本或图像像素使用二进制文件可以更紧凑地存储数据避免了字符编码的额外开销。但也并非绝对的例如存储一个数字900对于文本文件来说就是3个字符是3个字节而对于二进制来说就是一个int类型的数字需要4个字节了。跨平台性文本文件在不同的操作系统下换行符是不同的在Windows上是\r\n而linux下确实\n所以可能会导致在跨平台处理文本文件的时候需要进行换行字符的转化。而二进制文件来说虽然不受字符编码和换行符的影响但是不同平台下可能对于数据的存储个数有不同的处理方式例如大小端模式的区别。不同平台存储多字节数据的字节顺序可能不同因此在跨平台使用二进制文件时可能需要进行字节序的转换或其他数据格式的调整。
http://www.hkea.cn/news/14336771/

相关文章:

  • 做网站和自媒体哪个好公众号wordpress
  • 做网站 excel网站建设最好的公司排名
  • 对门户网站建设情况的报告黄村网站建设公司
  • 建设公司门户网站南宁网站定制团队
  • 手机网站开发服务商惠州网站制作公司哪家好
  • 网站顶部展出的大幅广告代理注册公司需要什么条件
  • 工厂网站建设网站开发是自己开发还是外包的
  • 互联网 网站建设价格流程图制作网页
  • 做网站需要什么材料域名过期了被别人拿去做违法
  • 网站建设上海网站建设义乌百度网站制作
  • 做一个营销型网站多少钱清河做网站哪家便宜
  • 建设淘宝网站的人员组织中国纪检监察报地址
  • 建设银行网站账号怎么注销网站展示重点
  • 做彩票的网站网站后台上传用户界面不显示
  • 中心网站建设方法抖音代运营图片
  • 网站首页被k怎么恢复建设招标网 手机官方网站
  • 青少年宫网站开发wordpress数据库删不掉
  • asp网站默认后台找网站的方法
  • 台山网站建设做任务反佣金的网站
  • 个人建网站有什么好处wordpress 免费字体
  • 网站建设区别济南软件优化网站
  • 如何做公证网站网页发布时间建材网站建设案例
  • 浦江网站建设公司北京学校线上教学
  • 手机端网站html好看的单页模板南宁网站开发gxjzdrj
  • 软件开发培训机构去哪个学校深圳湛江网站制作优化
  • 展板模板网站中小企业网站建设济南兴田德润厉害吗
  • 软件技术岗位有哪些上海网站建设 乐云seo
  • 网站优化公司推荐电商小程序需要什么资质
  • 网站定制开发流程wordpress导航栏
  • 展示型网站可以优化吗做阿里巴巴还是做网站好