使用Qt獲取文件夾下的所有文件名

文件操作是日常開發中最常見的需求之一。在Qt中,通過QDir類可以方便地實現獲取文件夾下所有文件名的功能。本文將從以下幾個方面對Qt獲取文件夾下所有文件名進行詳細闡述:

一、獲取文件夾下的所有文件名

可以使用QDir類的entryList()函數獲取文件夾下的所有文件名:


QDir dir("folder_path");
QStringList files = dir.entryList(QDir::Files);

其中,folder_path為文件夾的路徑,files為獲取到的所有文件名的列表。

如果需要獲取文件夾下的所有文件(包括子文件夾中的文件),可以使用entryList()函數的重載形式:


QDir dir("folder_path");
dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
dir.setSorting(QDir::Name | QDir::DirsFirst);
QStringList files = dir.entryList();

上述代碼中,setFilter()函數可以設置過濾條件,只獲取文件或文件夾,並且排除.和..兩個特殊目錄。setSorting()函數可以設置排序條件,按照名稱排序並將文件夾放在前面。最後,entryList()函數返回獲取到的所有文件(包括子文件夾中的文件)的列表。

二、獲取指定後綴名的所有文件名

在實際開發中,有時需要獲取指定後綴名的所有文件名。可以使用QDir類的entryList()函數的過載形式實現:


QDir dir("folder_path");
QStringList filters;
filters << "*.docx" << "*.pptx" << "*.xlsx";
dir.setNameFilters(filters);
dir.setFilter(QDir::Files);
QStringList files = dir.entryList();

上述代碼中,setNameFilters()函數可以設置需要篩選的後綴名,也可以同時設置多個後綴名。

三、獲取文件夾下的所有子文件夾名

在某些情況下,需要獲取文件夾下所有的子文件夾的名稱。這個時候,可以使用QDir類的entryList()函數獲取所有文件名,然後遍歷文件名列表,將文件夾名稱添加到一個新列表中即可。


QDir dir("folder_path");
QStringList folders;
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
QFileInfoList fileList = dir.entryInfoList();
for (int i = 0; i < fileList.size(); ++i) {
    QFileInfo fileInfo = fileList.at(i);
    folders.append(fileInfo.fileName());
}

上述代碼中,首先調用setFilter()函數設置只篩選文件夾,並排除.和..目錄。然後,使用entryInfoList()函數獲取所有文件信息的列表,遍歷列表,將文件夾名稱添加到一個新列表中。

四、獲取文件夾大小

有時需要獲取文件夾的大小。可以使用QDir類的entryInfoList()函數獲取所有文件信息列表,然後遍歷列表,獲取文件大小,最後累加得到文件夾大小:


qint64 getFolderSize(const QString& folderPath){
    QDir dir(folderPath);
    qint64 size = 0;
    QFileInfoList fileList = dir.entryInfoList(QDir::Files);
    for(int i=0; i<fileList.size(); ++i) {
        size += fileList.at(i).size();
    }
    QFileInfoList folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
    for(int j=0; j<folderList.size(); ++j) {
        size += getFolderSize(folderList.at(j).absoluteFilePath());
    }
    return size;
}

上述代碼中,首先調用entryInfoList()函數獲取所有文件信息列表,然後遍歷列表累加得到文件夾內所有文件大小。接着,使用QDir類的entryInfoList()函數獲取所有子文件夾的信息列表,遞歸調用getFolderSize()函數獲取子文件夾大小,最後累加得到文件夾總大小。

五、獲取文件夾下的所有符號鏈接(軟鏈接)

有時需要獲取文件夾下的所有符號鏈接(軟鏈接)路徑。可以使用QDir類的entryInfoList()函數獲取符號鏈接的文件信息,然後獲取其路徑。


QDir dir("folder_path");
dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::System | QDir::NoSymLinks);
QList list = dir.entryInfoList();
for (int i = 0; i < list.size(); i++)
{
    QFileInfo fileInfo = list.at(i);
    if(fileInfo.isSymLink()) {
        QString linkTargetPath = fileInfo.symLinkTarget();
    }
}

上述代碼中,首先設置QDir類的過濾條件,僅獲取文件和鏈接(去除.和..目錄),然後獲取文件列表,用isSymLink()函數判斷文件是否為鏈接,如果是,則獲取其鏈接目標路徑。

總結

本文從獲取所有文件名、獲取指定後綴名的所有文件名、獲取文件夾下的所有子文件夾名、獲取文件夾大小、獲取文件夾下的所有符號鏈接等多個方面進行了詳細的闡述,並給出了對應的代碼示例。使用QDir類可以方便地實現文件操作,是Qt開發中不可或缺的部分。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/287309.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 13:08
下一篇 2024-12-23 13:08

相關推薦

  • Idea新建文件夾沒有java class的解決方法

    如果你在Idea中新建了一個文件夾,卻沒有Java Class,應該如何解決呢?下面從多個方面來進行解答。 一、檢查Idea設置 首先,我們應該檢查Idea的設置是否正確。打開Id…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • Qt State Machine與狀態機模式

    本文將介紹Qt State Machine和狀態機模式在Qt中的實現。Qt提供了QStateMachine和QState兩個類,可以方便地實現狀態機模式,並且能有效地處理複雜的、多…

    編程 2025-04-27
  • Python打開文件夾下所有文件

    本文將從以下幾個方面對Python打開文件夾下所有文件進行詳細闡述,希望對大家有所幫助: 一、如何使用Python打開指定文件夾下的所有文件 在Python中,可以使用os模塊的w…

    編程 2025-04-27
  • Python中的Qt庫

    Qt庫是一個跨平台的C++圖形用戶界面(GUI)工具包。它提供了豐富的界面控件和處理系統事件的功能,可以輕鬆創建交互界面、圖形化應用和多媒體應用。而Python中的Qt庫則是Qt的…

    編程 2025-04-27
  • Python刪除空文件夾的終極解決方案

    本文將詳細介紹如何使用Python刪除空文件夾,為您講解從多個方面進行操作的方法,以實現快速高效的清空文件夾。 一、檢測空文件夾方法 在Python中檢測文件夾是否為空很容易,僅需…

    編程 2025-04-27
  • .mvn文件夾:優化Maven項目管理的關鍵

    本文將從多個方面詳細闡述.mvn文件夾,幫助讀者更好地了解如何利用.mvn文件夾優化Maven項目管理。 一、為什麼需要.mvn文件夾? Maven是目前應用較廣泛的Java項目構…

    編程 2025-04-27
  • xmake qt:構建Qt應用的全流程解決方案

    本文將會詳細闡述xmake qt的使用方法以及其能夠解決的問題。針對Qt應用開發中的各種困境,xmake提供了一整套的解決方案,包括自動構建、依賴管理、部署打包等,極大地提高了開發…

    編程 2025-04-27
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python中判斷文件夾存在

    一、Python判斷文件夾是否存在 import os dir_path = “/path/to/dir” if os.path.exists(dir_path): print(“…

    編程 2025-04-25

發表回復

登錄後才能評論