好長時間沒有記錄了,這個程式寫過了,目的隻是為了記錄其中的一些簡單的用法。
檔案目錄操作相關的類:
- QCoreApplication :用于提取應用程式路徑 、程式名等檔案資訊 。
- QFile : 除了打開檔案操作外, QFile 還有複制檔案、删除檔案等功能。
- QFilelnfo:用于提取檔案的資訊,包括路徑、檔案名、字尾等。
- QDir:用 于提取目錄或檔案資訊,擷取一個目 錄下的檔案或目錄清單 ,建立或删除目錄和檔案,檔案重命名等操作。
- QTemporaryDir 和 QTemporaryFile :用于建立 臨時目 錄和臨時檔案。
- QFileSystemWatcher : 檔案和目錄監聽類 , 監昕目錄下檔案的添加、删除等變化,監昕檔案修改變化 。
話不多說了讓我們開始:
先上運作的圖:

連結:程式連接配接 提取碼:1obk
喜歡的小夥伴可以下載下傳此程式,點個贊就可以了
那我們開始分析吧:
QCoreApplication 類:
QCoreApplication 是為無 GUI 應用提供事件循環的類,是所有應用程式類 的基類,其子類QGuiApplication 為有 GUI 界面的應用程式提供流控制和主要的設定, QGuiApplication 的 子類QApplication 為基于 QWidget 的應用程式提供支援,包括界面的初始化等 。
QCoreApplication 的有用函數:
- QString applicationDirPath() 傳回應用程式啟動路徑徑
- QString applicationFilePath() 運回應用程式的帶有目錄的完整檔案名
- QString applicationName() 傳回應用程式名稱,無路徑無字尾
- QString ListlibraryPaths() 傳回動态加載庫檔案時 , 應用程式搜尋的目錄清單
- void setOrganizationName(QString &orgName) 為應用程式設定個機構名
- QString organizationName() 傳回應用程式的機構名
- void exit() 退出應用程式
下面讓我們看一下運用代碼吧:
QString str=QCoreApplication::applicationDirPath();
ui->plainTextEdit->appendPlainText(str+"\n");
QString str=QCoreApplication::applicationFilePath();
ui->plainTextEdit->appendPlainText(str+"\n");
QString str=QCoreApplication::applicationName();
ui->plainTextEdit->appendPlainText(str+"\n");
QStringList strList=QCoreApplication::libraryPaths();
for (int i=0;i<strList.count();i++)
ui->plainTextEdit->appendPlainText(strList.at(i));
ui->plainTextEdit->appendPlainText("");
QString str=QCoreApplication::organizationName();
ui->plainTextEdit->appendPlainText(str+"\n");
QFile 類
QFile 的一些靜态函數:
- bool copy(QString &fileName, QString &newName) 複制檔案
- bool rename(QString &oldName, QString &newName) 重命名檔案
- bool remove(QString & fileName) 删除檔案
- bool exists(QString & fileName) 判斷檔案是否存在
- bool setPermissions(QString &fileName , Permissions permissions) 設定檔案的權限,權限類型是枚舉類型QFi leDevice::Pennission
- Permissions permissions(QString &fileName) 傳回檔案的權限
QFile 的一些成員函數:
- void setFileName(QString &name) 設定檔案名 , 檔案己打開後不能再謂用此函數
- bool copy(QString &newName) 目前檔案複制為 newName 表示的檔案
- bool rename(QString &newName) 将目前檔案重命名為 newName
- bool remove() 删除目前檔案
- booI exists() 判斷目前檔案是否存在
- bool setPermissions(Permissions permissions) 設定檔案權限
- Permissions permissions() 傳回檔案的權限
- qint64 size() 傳回檔案的大小,位元組數
QString sous=ui->editFile->text(); //源檔案
QFileInfo fileInfo(sous);//
QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix();
QFile::copy(sous,newFile);
ui->plainTextEdit->appendPlainText("源檔案:"+sous);
ui->plainTextEdit->appendPlainText("複制為檔案:"+newFile+"\n");
QString sous=ui->editFile->text(); //源檔案
QFile file(sous);
QFileInfo fileInfo(sous);//
QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix();
file.copy(newFile);
ui->plainTextEdit->appendPlainText("源檔案:"+sous);
ui->plainTextEdit->appendPlainText("複制為檔案:"+newFile+"\n");
QString sous=ui->editFile->text(); //源檔案
bool the=QFile::exists(sous);
if(the)
ui->plainTextEdit->appendPlainText(+"true \n");
else
ui->plainTextEdit->appendPlainText(+"false \n");
QString sous=ui->editFile->text(); //源檔案
QFile file(sous);
bool the=file.exists();
if(the)
ui->plainTextEdit->appendPlainText(+"true \n");
else
ui->plainTextEdit->appendPlainText(+"false \n");
QString sous=ui->editFile->text(); //源檔案
QFile::remove(sous);
ui->plainTextEdit->appendPlainText("删除檔案:"+sous+"\n");
QString sous=ui->editFile->text(); //源檔案
QFile file(sous);
file.remove();
ui->plainTextEdit->appendPlainText("删除檔案:"+sous+"\n");
還有很多寫法這裡不再多介紹,請看項目中的程式。
QFilelnfo 類
QFileinfo 類的接口函數提供檔案的各種資訊 。QFilelnfo 對象建立時可以指定 一個檔案名作為目前檔案,也可以用 setFile()函數指定一個檔案作為目前檔案 。
QString sous=ui->editFile->text(); //源檔案
QFileInfo fileInfo(sous);//源檔案資訊
QString newFile=fileInfo.path()+"/"+fileInfo.baseName()+".XYZ"; //更改檔案字尾為".XYZ"
QFile::rename(sous,newFile); //重命名檔案
ui->plainTextEdit->appendPlainText("源檔案:"+sous);
ui->plainTextEdit->appendPlainText("重命名為:"+newFile+"\n");
QDir 類
Dir 是進行目錄操作的類,在建立 QDir 對象時傳遞一個目錄字元串作為目前目錄,然後 QDir函數就可以針對目前目錄或目錄下的檔案進行操作。
QString curDir=QDir::currentPath();
QDir lastDir(curDir);
ui->plainTextEdit->appendPlainText("選擇目錄之前:"+lastDir.absolutePath());
QString aDir=QFileDialog::getExistingDirectory(this,"選擇一個目錄",curDir,QFileDialog::ShowDirsOnly);
if (aDir.isEmpty())
return;
ui->editDir->setText(aDir);
lastDir.setPath(aDir);
ui->plainTextEdit->appendPlainText("選擇目錄之後:"+lastDir.absolutePath()+"\n");
更多的寫法請看例子。這裡不多介紹。
QTemporaryDir 和 QTemporaryFile
QTemporaryDir的一些成員函數:
- void setAutoRemove(bool b) 設定為是否自動删除
- QString path() 傳回建立的臨時目錄名稱
- bool remove() 删除此臨時目錄及其下面所有檔案
QFileSystemWatcher 類
QFileSystemWatcher 是對目錄和檔案進行監聽的類。 把某些目錄或檔案添加到 QFileSystemWatcher 對象的監昕清單後 ,當目錄下發生檔案建立 、删除等操作時會發射 directoryChanged ()信号 ,當監聽的檔案發生修改、 重命名等操作時, 會發射 fileChanged()信号。 是以,這個類在進行目錄或檔案監聽時起作用 。
ui->plainTextEdit->appendPlainText("監聽目錄:"+ui->editDir->text()+"\n");
fileWatcher.addPath(ui->editDir->text());//添加監聽目錄
fileWatcher.addPath(ui->editFile->text());//添加監聽檔案
QObject::connect(&fileWatcher,&QFileSystemWatcher::directoryChanged,
this,&Dialog::on_directoryChanged); //directoryChanged
QObject::connect(&fileWatcher,&QFileSystemWatcher::fileChanged,
this,&Dialog::on_fileChanged); //fileChanged
fileWatcher.removePath(ui->editDir->text());//
fileWatcher.removePath(ui->editFile->text());//
QObject::disconnect(&fileWatcher,&QFileSystemWatcher::directoryChanged,
this,&Dialog::on_directoryChanged); //directoryChanged
QObject::disconnect(&fileWatcher,&QFileSystemWatcher::fileChanged,
this,&Dialog::on_fileChanged); //fileChanged
有在頭檔案加上:
private:
QFileSystemWatcher fileWatcher;
public slots:
void on_directoryChanged(const QString path);
void on_fileChanged(const QString path);
void Dialog::on_directoryChanged(const QString path)
{ //directoryChanged()信号的槽函數
ui->plainTextEdit->appendPlainText(path);
ui->plainTextEdit->appendPlainText("目錄發生了變化\n");
}
void Dialog::on_fileChanged(const QString path)
{//fileChanged()信号的槽函數
ui->plainTextEdit->appendPlainText(path);
ui->plainTextEdit->appendPlainText("檔案發生了變化\n");
}
每個函數用法很多,建議把項目下載下傳下來,來學習,讓你盡快的練習,并且去掌握它。一起加油。