日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt学习(四):qt读写文件

發布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt学习(四):qt读写文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知識點

  • QFile讀寫文件
  • QFileInfo獲取文件信息
  • QDataStream讀寫文件
  • QTextStream讀寫文件
  • 內存文件QBuffer讀寫文件
  • 結果演示

    widget.h

    #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void on_ReadButton_clicked();void on_WriteButton_clicked();//通過文件流讀寫文件void writeDate();void readDate();//第三種方式通過QTextStream讀寫文件void writeDateTextStre();void readDateTextStre();//第四種方式通過內存文件QBuffer讀寫文件void WriteReadBuffer();private:Ui::Widget *ui;};#endif // WIDGET_H

    widget.cpp

    #include "widget.h" #include "ui_widget.h" #include <QFileDialog> #include <QFile> #include <QFileInfo> #include <QDebug> #include <QDateTime> #include <QDataStream> #include <QTextStream> #include <QBuffer>//內存文件#define cout qDebug() << "[" << __FILE__ <<":" << __LINE__ << "]"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);//第二種方式通過QDataStream讀寫文件writeDate();readDate();//第三種方式通過QTextStream讀寫文件writeDateTextStre();readDateTextStre();//第四種方式通過內存文件QBuffer讀寫文件WriteReadBuffer(); }Widget::~Widget() {delete ui; }void Widget::on_ReadButton_clicked() {QString path=QFileDialog::getOpenFileName(this, tr("Open File"),"../",tr("Text files (*.txt);;Images (*.png *.xpm *.jpg)"));//路徑打開了if(!path.isEmpty()){//文件對象QFile file(path);bool openOk=file.open(QIODevice::ReadOnly);if(openOk){#if 0//讀文件,默認只識別utf8編碼QByteArray array=file.readAll();//顯示到編輯區ui->textEdit->setText(array); #endifQByteArray array;while(!file.atEnd()){//讀一行array+=file.readLine();}ui->textEdit->setText(array);}file.close();}//QFileInfo獲取文件信息QFileInfo FileDate(path);qDebug()<<FileDate.exists();if(FileDate.exists()){qDebug() << "文件名字:" <<FileDate.fileName();qDebug() << "文件大小:" << FileDate.size()<<"bit";qDebug() << "文件創建時間:" <<FileDate.created().toString("yyyy-MM-dd hh:mm:ss");} }void Widget::on_WriteButton_clicked() {QString path=QFileDialog::getSaveFileName(this, tr("Save File"),"../",tr("Text files (*.txt);;Images (*.png *.xpm *.jpg)"));//成功了if(!path.isEmpty()){//文件對象QFile file(path);//打開文件,只寫方式bool openOk=file.open(QIODevice::WriteOnly);if(openOk){//獲取編輯區內容QString str=ui->textEdit->toPlainText();//顯示中文,轉為uft8QByteArray strArray=str.toUtf8();file.write(str.toUtf8());}file.close();}}//通過文件流讀寫文件 void Widget::writeDate(){QString path("../dateTxt.txt");//qDebug()<<path;//創建文件對象QFile file(path);//打開文件,只寫方式bool openOk=file.open(QIODevice::WriteOnly);if(openOk){//創建數據流,和file文件關聯//往數據流中寫數據,相當于往文件里寫數據QDataStream stream(&file);stream<<QString("QDataStream 今年年齡:")<<26;file.close();} }void Widget::readDate(){QString path("../dateTxt.txt");//qDebug()<<path;//創建文件對象QFile file(path);//打開文件,只寫方式bool openOk=file.open(QIODevice::ReadOnly);if(openOk){//創建數據流,和file文件關聯//往數據流中讀數據,相當于往文件里讀數據QDataStream stream(&file);//讀的時候,按寫的順序取數據QString str;int a;stream>>str>>a;//qDebug() << str.toUtf8().data() << a;cout << str.toUtf8().data() << a;file.close();} }//第三種方式通過QTextStream讀寫文件 void Widget::writeDateTextStre(){QString path("../DemoTxt.txt");//qDebug()<<path;//創建文件對象QFile file(path);//打開文件,只寫方式bool openOk=file.open(QIODevice::WriteOnly);if(openOk){//創建數據流,和file文件關聯//往數據流中寫數據,相當于往文件里寫數據QTextStream stream(&file);//指定編碼stream.setCodec("UTF-8");stream<<QString("QTextStream 今年年齡:")<<26;file.close();}}/*使用readData()函數的話,能夠輸出結果,只是輸出的結果中會多出一個0;* 這是因為利用這種辦法它并不能判斷字符串的結尾,所以就將str和a當成一個字符串了,到后面要輸出a的時候,* 里面已經沒有內容了,于是就輸出了0;* 這也說明使用這種方式讀內容的話,并不安全,* 所以應該采用readall、readline的方式 */ void Widget::readDateTextStre(){QString path("../DemoTxt.txt");//qDebug()<<path;//創建文件對象QFile file(path);//打開文件,只寫方式bool openOk=file.open(QIODevice::ReadOnly);if(openOk){//創建數據流,和file文件關聯//往數據流中寫數據,相當于往文件里寫數據QTextStream stream(&file);//指定編碼stream.setCodec("UTF-8");// QString str01=stream.readAll(); // cout<<str01;QByteArray str;while(!file.atEnd()){str+=file.readLine();}cout<<str;file.close();} }//第四種方式通過內存文件QBuffer讀寫文件 void Widget::WriteReadBuffer(){//QBuffer寫文件QBuffer merbuffer;merbuffer.open(QIODevice::WriteOnly);QDataStream stream(&merbuffer);stream<<QString("QBuffer 今年年齡:")<<26;merbuffer.close();//cout<<merbuffer.buffer();merbuffer.open(QIODevice::ReadOnly);QDataStream streamOut(&merbuffer);//讀的時候,按寫的順序取數據QString str;int a;streamOut>>str>>a;//qDebug() << str.toUtf8().data() << a;cout << str.toUtf8().data() << a;merbuffer.close(); }

    總結

    以上是生活随笔為你收集整理的Qt学习(四):qt读写文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。