Qt文件操作
QFile
說明:
QFile是一種輸入輸出設備(QIODevice),用來關聯一個文件。可以用來對文件進行以下操作:打開\關閉\刪除\重命名\拷貝\一個文件。
QFile構造函數
QFile::QFile(const QString &name);
函數fileName()
QString QFile::fileName()const;//返回的是完整路徑名
QFileInfo
用處很大。
構造函數
QFileInfo(const QString &file);
QFileInfo(const QFile &file);
QFileInfo(const QDir &dir, const QString &file);
QFileInfo(const QFileInfo &fileinfo);
常用函數
QString fileName() const;//只返回文件名,不包含路徑
QString filePath() const;//返回完整文件名,包含路徑
QString absoluteFilePath() const;
QString canonicalFilePath() const;
QString baseName() const;//相當於第一個函數的結果去掉後綴名
QString completeBaseName() const;
QString suffix() const;//後綴名
QString bundleName() const;//Mac OS X 上的suffix()函數
QString completeSuffix() const;
QDir
當需要獲取目錄下的信息時使用。構造的時候只傳入文件夾名,不要傳入具體文件
構造函數
QDir(const QDir&);
QDir(const QString &path = QString());
QDir( const QString &path,
const QString &nameFilter,
SortFlags sort = SortFlags(Name| IgnoreCase), Filters filter = AllEntries);
常用函數
第一組
- static QDir QDir::current();//返回應用程序的當前目錄
- static QString QDir::currentPath();//返回應用程序的當前目錄的絕對路徑。
這兩個函數的區別是:返回值不同。第一個函數返回一個目錄對象,由第三個構造函數可以看出,一個目錄對象包含多個成員變量,第一個變量的值就是currentPath()的返回值。
第二組
- QString dirName() const; //返回目錄的名稱
- QString path() const;//返回目錄的完整路徑
- QString absolutePath() const; //返回目錄的絕對路徑
第三組 最有用
QStringList entryList(const QStringList &nameFilters,
Filters filters = NoFilter,
SortFlags sort = NoSort )const
QStringList entryList(Filters filters = NoFilter,
SortFlags sort = NoSort);
這兩個函數返回的是目錄下的文件名、目錄名、默認還包含兩個特殊文件夾"."和".."。注意!!!!! 只有名字,沒有路徑。
QFileInfoList entryInfoList(const QStringList &nameFilters,
Filters filters = NoFilter,
SortFlags sort = NoSort)const;
QFileInfoList entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort); `
這兩個函數返回QFileInfo,而QFileInfo有個filePath,可以返回文件、文件夾的完整路徑。
案例
1.獲取一個文件夾下的所有.txt文件。
例如:在文件夾”j:/TestProject/src”下有一個子文件夾test和三個文件1.txt 2.txt 3.xml;
要獲取1.txt 和2.txt 代碼如下:
QString dirPath = QFileDialog::getExistingDirectory();
QDir dir(dirPath);
QStringList nameFilters;
nameFilters << "*.txt";
QFileInfoList fileInfos = dir.entryInfoList(nameFilters,QDir::Files|QDir::NoDotAndDotDot);
foreach(QFileInfo fileInfo , fileInfos)
{
qDebug() << fileInfo.filePath();
}
對於fieName()返回值的總結
如果一個類只提供了fileName()一個函數,則它返回的是完整路徑。如果一個類同時提供了fileName() 和filePath(),則fileName()返回的僅僅是文件名。