天天看點

qfile在指定目錄建立_Qt學習之路_8(Qt中與檔案目錄相關操作)

一、與檔案目錄操作有關操作。

Qt中與檔案目錄相關的操作在QDir中,需加入#include 語句。

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是判斷其是否為檔案。

其中列出根目錄和建立目錄檔案終端輸出如下:

qfile在指定目錄建立_Qt學習之路_8(Qt中與檔案目錄相關操作)

查詢指定目錄下的檔案和檔案夾的背景輸出如下:

qfile在指定目錄建立_Qt學習之路_8(Qt中與檔案目錄相關操作)

本次實驗的代碼和注釋如下:

#include #include#include#include

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()<

}//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:"<

qDebug()<< "File:"<

}returna.exec();

}

二、與檔案讀取操作相關。

對檔案的操作最常見的就是檔案的讀取了,傳入一個檔案名,要向其中寫入資料或者讀取資料。QFile類中可以完成于檔案操作相關的很多内容。另外還有一個檔案讀取和寫入的輔助的類,即QTextStream。有點類似标準C++中的cout,cin等操作,不過這裡的對象是Qt,不是終端。

下面的代碼完成向一個檔案中寫入資料然後又向該檔案中讀出寫入的資料這一功能。且在資源檔案中把本工程的工程檔案加入其中并且讀出來了.

其效果如下:

qfile在指定目錄建立_Qt學習之路_8(Qt中與檔案目錄相關操作)

代碼和注釋如下:

#include #include#include#include#include

voidwrite(QString file_name)

{//以傳入的檔案名建立一個檔案,傳入的檔案名包含有目錄資訊在裡面

QFile file(file_name);//以隻寫和文本的方式打開該檔案

if(!file.open(QFile::WriteOnly |QFile::Text))

{

qDebug ()<< "Could not open the file by reading";return;

}//out其實是一個緩沖區

QTextStreamout(&file);//輸出内容到緩沖區

out << "hell world!";

file.flush();//将緩沖區的内容輸出的文本

file.close();//關閉檔案

}voidread(QString file_name)

{

QFile file(file_name);//以隻讀和文本的方式打開該檔案

if(!file.open(QFile::ReadOnly |QFile::Text))

{

qDebug ()<< "Could not open the file by reading";return;

}

QTextStreamin(&file);

QString text;//in >> text;//如果是用這句的話則隻是獨到了1句而已,即内容hello

text= in.readAll();//這也寫可以全部讀完

qDebug ()<

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中對檔案的操作還是蠻友善的,有很多函數可以用。