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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Qt学习笔记之文件处理

發布時間:2024/9/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt学习笔记之文件处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qt提供了通用的文件處理類QFile和處理文本的QTextStream類和處理二進制數據的QDataStream類,這些流操作極大地方便了對文件的督促存儲。對文件信息和目錄進行操作的類是QfileIno,QDir和QDirIterator。要監視文件和目錄變化,則可以使用QFi了SystemWatcher類。

1. 文件處理類QFile

QFile類提供了一個從文件中讀取和寫入文件的接口。

QFile是一個用于讀寫文本、二進制文件和資源的I/O設備。QFile可以單獨使用,或者更方便地與QTextStream或QDataStream一起使用。

文件名通常在構造函數中傳遞,但是可以在任何時候使用setFileName()設置它。無論操作系統如何,QFile都期望文件分隔符為'/'。不支持使用其他分隔符(例如“\”)。

可以使用exists()檢查文件是否存在,并使用remove()刪除文件。(QFileInfo和QDir提供了更高級的文件系統相關操作。)

用open()打開文件,用close()關閉文件,用flush()刷新文件。

通常使用QDataStream或QTextStream讀取和寫入數據,但是也可以調用qiodevice繼承的函數read()、readLine()、readAll()和write()。QFile還繼承了getChar()、putChar()和ungetChar(),它們一次處理一個字符。

文件的大小由size()返回。您可以使用pos()獲取當前文件位置,或者使用seek()移動到新的文件位置。如果已經到達文件的末尾,atEnd()返回true。

1.1 讀寫文本文件

1.1.1?通過QIODevice來讀寫文件

#include <QCoreApplication> #include <QChar> #include <QString> #include <QDebug> #include <QFile> int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QFile file("E:/work/qe/mytest1/file.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug("can not open file ");exit(0);}while (!file.atEnd()) {QByteArray line = file.readLine();qDebug("%s",line.data());}return a.exec(); }

1.1.2 通過QTextStream讀寫文本

#include <QCoreApplication> #include <QChar> #include <QString> #include <QDebug> #include <QFile> int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QFile file("E:/work/qe/mytest1/file.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug("can not open file ");exit(0);}QTextStream in(&file);QString line = in.readLine();while (!line.isNull()) {qDebug("%s",line.toLatin1().data());line = in.readLine();}return a.exec(); }

?1.2 操作二進制文件

QDataStream類提供了將二進制文件串行化的功能。QDataStream實現了C++的基本類型的串行化,如char,short,int,char*等。

#include <QCoreApplication> #include <QChar> #include <QString> #include <QDebug> #include <QFile> #include <QDataStream> #include <QTextStream>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);//! 二進制文件QFile fileBin("E:/work/qe/mytest1/file1.dat");fileBin.open(QIODevice::WriteOnly);QDataStream out(&fileBin);//! 文本文件QFile file("E:/work/qe/mytest1/file.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug("can not open file ");exit(0);}QTextStream in(&file);QString line = in.readLine();while (!line.isNull()) {qDebug("%s",line.toLatin1().data());line = in.readLine();out<<line;}file.close();fileBin.close();return a.exec(); }

?1.3 臨時文件?

QTemporaryFile可以安全創建一個獨一無二的臨時文件,臨時文件可以用open()來創建,Qt可以保證臨時文件名不會重復。在臨時文件對象銷毀后,將自動刪除該臨時文件。臨時文件通過close()關閉后還可以再打開。只要臨時文件對象還沒有銷毀,臨時文件就一直存在并由QTemporaryFile內部保持打開。

系列臨時文件可以通過QDir::tempPath()來獲取。在linux系統上臨時目錄通過是tmp,在Windows上則是由環境變量TEMP或TMP指定的。

詳見《Qt學習筆記之QTemporaryFile》

2. 目錄操作

QDir類具有存取目錄結構和內容能力。使用QDir可以操作和存取目錄或文件信息、操作底層文件系統,而且可以存取Qt的資源文件。

#include <QCoreApplication> #include <QDebug> #include <QDir> #include <QFileInfo>void test_dir() {const char* PATH = "G:/ggg";QDir dir;if( !dir.exists(PATH) ) //判斷電腦里是否這個目錄{dir.mkdir(PATH); //創建問價目錄}if( dir.exists(PATH) ){dir.cd(PATH);QStringList list = dir.entryList();for( int i = 0; i < list.length(); i++ ) //打印目錄文件{qDebug() << list[i];}}}unsigned int calculate_size(QString path) //計算目錄文件的大小 {QFileInfo info(path);unsigned int ret = 0;if( info.isFile() ){ret = info.size();}else if( info.isDir() ){QDir dir(path);QFileInfoList list = dir.entryInfoList();for( int i = 0; i < list.length(); i++ ){qDebug()<<list[i].fileName();if(list[i].fileName() !="." && list[i].fileName() != ".."){ret = ret + calculate_size(list[i].absoluteFilePath());}}}return ret; }int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);test_dir();qDebug() << calculate_size("F:/論文");return a.exec();}

參考資料:

1.?QT基礎:40---文本文件的讀寫(QFile、QTextStream)

2.?QT基礎:42---文件目錄操作(QCoreApplication、QFile、QFileInfo、QDir、QTemporaryDir/File、QFileSystemWatcher)?

?

總結

以上是生活随笔為你收集整理的Qt学习笔记之文件处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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