| 以下翻譯自Qt的線上文件,有關於QDir的說明: QDir類別提供對目錄架構的存取,而它的內容與平台無關。 QDir被用來處理路徑名稱、根據路徑與檔案來存取資訊,並且根據檔案系統進行處理。 QDir可以使用相對路徑或是絕對路徑來指向一個檔案,絕對路徑以目錄符號"/"作為開始(或是Windows下的磁碟機代號),如果您使用"/"作為路 徑分隔,Qt會根據作業系統進行轉換,相對路徑檔案則是以目錄名稱或檔案名稱作為開始,並根據目前的目錄來指定相對於它的路徑。 "目前"的路徑是指應用程式目前的工作目錄,QDir可以使用setPath()與path()來設定與取得自己的路徑。 絕對路徑的一個例子是"/tmp/quartz",相對路徑看起來可能是"src/fatlib",您可以使用isRelative()來檢查QDir是 使用相對路徑或是絕對路徑,使用convertToAbs()可以將相對的QDir轉換為絕對路徑,要簡化路徑的表示就使用cleanDirPath (),要取得一個沒有符號連結或是重覆的".."元素,請使用canonicalPath(),我們可以使用setPath()來設定路徑,用cd()與 cdUp()來改變路徑。 QDir提供幾個靜態方法,例如setCurrent()用來設定應用程式目前的工作路徑,而currentDirPath()用來取得應用程式的工作路 徑,要一些一般路徑的存取可以使用current()、home()與root(),它們傳回QDir物件,或是使用currentDirPath()、 homeDirPath()與rootDirPath(),它們傳回路徑的字串。 目錄中的項目個數可以使用count()方法來取得,使用entryList()來取得一個目錄下的所有檔案與子目錄字串名稱。如果您想要的是 QFileInfo指標,使用entryInfoList(),這兩個方法都可以使用名稱過濾、屬性過濾(像是唯讀、檔案或是目錄等等)與排序,過濾與排 序可以使用setNameFilter()、setFilter()與setSorting()方法來設定,它們也可以用於entryList()、 entryInfoList()參數的指定上。 使用mkdir()方法可以建立一個新的目錄,使用rename()方法來更改目錄名稱,使用rmdir()方法將一個已經存在的目錄移除,使用remove()方法來移除檔案,您可以使用exists()、isReadable()與isRoot()方法來測試目錄。 要以檔案名稱取得路徑,請使用filePath()方法,要取得目錄名稱請使用dirName();這兩個方法都無法檢查檔案或目錄是否存在。 根目錄的顯示是由drives()提供;在Unix系統下這會傳回包括根目錄"/"的列示;在Windows下則通常包括"D:/"等。 如果您想要路徑的形式是基於作業系統的適當形式,使用convertSeparetors()。 看看目錄是否存在: QDir
d( "example"
);
// "./example"
if ( !d.exists() ) qWarning( "Cannot find the example directory" ); 進入目錄並讀取檔案: QDir
d =
QDir::root();
// "/"
if ( !d.cd("tmp") ) { // "/tmp" qWarning( "Cannot find the \"/tmp\" directory" ); } else { QFile f( d.filePath("ex1.txt") ); // "/tmp/ex1.txt" if ( !f.open(IO_ReadWrite) ) qWarning( "Cannot create the file %s", f.name() ); } 下面的程式顯示目前目錄下的所有檔案(包括符號連結),並以大小作排序,最小的排在前面: #include <stdio.h> |