一、與文件目錄操作有關操作。
Qt中與文件目錄相關的操作在QDir中,需加入#include <QDir>語句。
QDir::drives()是列出電腦根目錄下的所有目錄,返回的是QFileInfoList。利用其返回的QFileInfo,可以使用QFileInfo::absoluteFilePath()方法為返回其絕對路徑。
Bool QDir::exists ( const QString & name ) 是判斷以參數中為路徑名的路徑是否存在,如果存在該路徑則返回真。
bool QDir::mkpath ( const QString & dirPath ) ,該函數是創建以dirPath為路徑的一個路徑,如果父路徑不存在的話,則一起同時創建;創建成功返回1,否則返回0.
QFileInfoList QDir::entryInfoList為列出其路徑下的所有文件和。目錄信息
bool QFileInfo::isDir是判斷其是否為目錄,同理。
bool QFileInfo::isFile是判斷其是否為文件。
其中列出根目錄和創建目錄文件終端輸出如下:
查詢指定目錄下的文件和文件夾的后台輸出如下:
本次實驗的代碼和注釋如下:
#include <QCoreApplication> #include <QDebug> #include <QDir> #include <QString> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // QDir my_dir("C:\\QtTest"); QDir my_dir; // my_dir.absolutePath(); //foreach是Qt中對c++中增加的關鍵字,foreach (variable, container) //其意思是訪問遍歷第2個參數容器中的所有內容,每次都存入第1個參數變量中 //QDir::drives()是列出電腦根目錄下的所有目錄,返回的是QFileInfoList foreach(QFileInfo my_info, my_dir.drives()) { //QFileInfo::absoluteFilePath為返回絕對路徑,包括名字 qDebug() << my_info.absoluteFilePath(); } // qDebug() << my_dir.exists(); QString mkdir = "C:/QtTest/zzz"; //如果指定的路徑不存在時 if(!my_dir.exists(mkdir)) { //給my_dir創建一個路徑 my_dir.mkpath(mkdir); qDebug() << "Created successed!"; } //指定的路徑存在時 else { qDebug() << "Alreadly exists!"; } QDir my_dir1("C:/"); //QFileInfoList QDir::entryInfoList為列出其路徑下的所有文件和 //目錄信息。bool QFileInfo::isDir是判斷其是否為目錄,同理 //bool QFileInfo::isFile是判斷其是否為文件 foreach(QFileInfo my_info, my_dir1.entryInfoList()) { if(my_info.isDir()) qDebug()<< "Dir: "<<my_info.absoluteFilePath(); if(my_info.isFile()) qDebug()<< "File: "<<my_info.absoluteFilePath(); } return a.exec(); }
二、與文件讀取操作相關。
對文件的操作最常見的就是文件的讀取了,傳入一個文件名,要向其中寫入數據或者讀取數據。QFile類中可以完成於文件操作相關的很多內容。另外還有一個文件讀取和寫入的輔助的類,即QTextStream。有點類似標准C++中的cout,cin等操作,不過這里的對象是Qt,不是終端。
下面的代碼完成向一個文件中寫入數據然后又向該文件中讀出寫入的數據這一功能。且在資源文件中把本工程的工程文件加入其中並且讀出來了.
其效果如下:
代碼和注釋如下:
#include <QCoreApplication> #include <QDebug> #include <QFile> #include <QString> #include <QTextStream> void write(QString file_name) { //以傳入的文件名建立一個文件,傳入的文件名包含有目錄信息在里面 QFile file(file_name); //以只寫和文本的方式打開該文件 if(!file.open(QFile::WriteOnly | QFile::Text)) { qDebug () << "Could not open the file by reading"; return; } //out其實是一個緩沖區 QTextStream out(&file); //輸出內容到緩沖區 out << "hell world!"; file.flush();//將緩沖區的內容輸出的文本 file.close();//關閉文件 } void read(QString file_name) { QFile file(file_name); //以只讀和文本的方式打開該文件 if(!file.open(QFile::ReadOnly | QFile::Text)) { qDebug () << "Could not open the file by reading"; return; } QTextStream in(&file); QString text; //in >> text;//如果是用這句的話則只是獨到了1句而已,即內容hello text = in.readAll();//這也寫可以全部讀完 qDebug () << text; file.close();//關閉文件 } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString file_name = "C:/QtTest/file.txt"; write(file_name); // read(file_name); //該句表示從資源文件中讀取內容。因為一開始我已經在資源文件中 //添加了qfile.pro文件。 read(":/MyFiles/qfile.pro"); }
總結:通過這次簡單的實驗,發現Qt中對文件的操作還是蠻方便的,有很多函數可以用。