QFileDevice
QBuffer
QProcess
和 QProcessEnvironment
QFile
QFileInfo
QFile
類用來對文件的操做:安全
頭文件 | #include <QFile> |
---|---|
模塊 | QT += core |
基類 | QFileDevice. |
子類 | QTemporaryFile |
使用QFile能夠打開關閉文件,並對文件進行處理。其主要使用方法有:函數
QString text; QFile read(oldPath); if(!read.exists())return; if(read.open(QIODevice::ReadOnly)){ text=read.readAll(); } read.close(); QFile write(newPath); if(write.open(QIODevice::WriteOnly)){ write.write(text,qstrlen(text)); } write.close();
QString text; QFile read(oldPath); if(!read.exists())return; if(read.open(QIODevice::ReadOnly)){ QTextStream in(&read); //使用流進行讀寫 in.setCodec("UTF-8"); //設置讀時編碼 text=in.readAll(); //使用流讀取所有文件 } read.close(); QFile write(newPath); if(write.open(QIODevice::WriteOnly)){ QTextStream out(&write); out.setCodec("UTF-8"); out<<text; } write.close();
QFile::copy(oldFilePath,newFilePath); //其中oldFilePath文件必須存在,newFilePath的路徑中不能包含不存在的路徑!
bool QFile::remove() bool QFile::remove(const QString & fileName) [static]
bool QFile::rename(const QString & newName) bool QFile::rename(const QString & oldName, const QString & newName) [static]
QDir dir; dir.mkpath(dirpath); //建立新目錄,dirpath中的全部未建立的子文件夾都將被建立 dir.setPath(dirCur);//設置當前路徑 dir.mkdir(dirName); //建立子目錄,在當前目錄下建立一個子文件夾dirName
QFileInfo() QFileInfo(const QString & file) QFileInfo(const QFile & file) QFileInfo(const QDir & dir, const QString & file) QFileInfo(const QFileInfo & fileinfo)
經常使用方法,假設文件爲:"E:/dirPath/fileName.sfx"學習
QString fileName() const // 返回值爲: "fileName.sfx"
QString filePath() const // 返回值爲: "E:/dirPath" QDir dir() const
QString suffix() const // 返回值爲: "sfx"
bool exists() const
QString QFileInfo::absoluteFilePath() const // 返回包括文件名的絕對路徑。 QString QFileInfo::absolutePath() const // 返回不包括文件名的絕對路徑。 QDir QFileInfo::absoluteDir() const
QString QFileInfo::baseName() const eg: QFileInfo fi("/tmp/archive.tar.gz"); QString base = fi.baseName(); // base = "archive"
QDir(const QDir & dir) QDir(const QString & path = QString()) QDir(const QString & path, const QString & nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ), Filters filters = AllEntries)
QFileInfoList QDir::entryInfoList(const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const eg: QStringList fileList; fileList<<"*.xml"<<"*.txt"; //只顯示xml文檔和txt文檔 QDir dir; dir.setPath(dirPath); if(!dir.exists())return; //設置目錄下顯示的內容,這裏只顯示文件,不顯示文件夾 dir.setFilter(QDir::Files); //設置目錄下文件的排序方式,這裏爲按名稱排序 dir.setSorting(QDir::Name); //設置過濾字段 dir.setNameFilters(fileList); //獲取目錄下對應文件 QFileInfoList list = dir.entryInfoList();
QSaveFile類是爲了安全的進行寫操做而設計的,用來寫入文本和二進制數據到文件中,當寫入操做失敗時,不會丟失要寫入的數據。
當要寫入數據時,會先創建一個臨時的文件保存要寫入的數據。若是在寫入過程當中沒有錯誤發生,則使用commit()
提交到最終要寫入的文件中去。這種機制確保了一旦發生寫入錯誤,寫入的文件中不會沒有數據。而且沒有部分寫入的文件老是出如今最後的位置。當向磁盤寫入文檔時常常使用此類。
QSaveFile會在寫入過程當中自動的檢查錯誤。能夠像QFile類那樣來進行操做文件,使用 open()
打開文件,也可使用繼承自QIODevice 類的方法操做。但不能使用close()
,而是使用commit()
!因爲應用程序出錯致使的呼叫 cancelWriting()
,即便調用 commit()
也不會進行保存。
其自身Public 方法:this
QSaveFile(const QString & name) QSaveFile(QObject * parent = 0) QSaveFile(const QString & name, QObject * parent) ~QSaveFile() void cancelWriting() bool commit() bool directWriteFallback() const void setDirectWriteFallback(bool enabled) void setFileName(const QString & name)
QTemporaryDir用於安全的創建一個臨時的目錄,目錄名由類構造函數自動生成。使用 QString path() const
獲取路徑。
其自身公用方法有:編碼
QTemporaryDir() QTemporaryDir(const QString & templatePath) ~QTemporaryDir() bool autoRemove() const bool isValid() const QString path() const bool remove() void setAutoRemove(bool b)
QT給出的列子:設計
// Within a function/method... QTemporaryDir dir; if (dir.isValid()) { // dir.path() returns the unique directory path } // The QTemporaryDir destructor removes the temporary directory // as it goes out of scope.
QTemporaryFile用於安全的建立一個臨時文件。調用open()
時自動建立。自身公共方法有:code
QTemporaryFile() QTemporaryFile(const QString & templateName) QTemporaryFile(QObject * parent) QTemporaryFile(const QString & templateName, QObject * parent) ~QTemporaryFile() bool autoRemove() const QString fileTemplate() const bool open() void setAutoRemove(bool b) void setFileTemplate(const QString & name)
QT給出的使用列子:xml
// Within a function/method... QTemporaryFile file; if (file.open()) { // file.fileName() returns the unique file name } // The QTemporaryFile destructor removes the temporary file // as it goes out of scope.
QDirIterator用於遍歷目錄,無基類!blog
Constant | Value | Description |
---|---|---|
QDirIterator::NoIteratorFlags | 0x0 | 默認狀況,迭代器將返回指定目錄的條目 |
QDirIterator::Subdirectories | 0x2 | 列出指定目錄的全部子條目(包括子目錄下的目錄) |
QDirIterator::FollowSymlinks | 0x1 | 在Subdirectories條件下忽略符號連接 "." 或者 ".." |
其自身公有方法:排序
QDirIterator(const QDir & dir, IteratorFlags flags = NoIteratorFlags) QDirIterator(const QString & path, IteratorFlags flags = NoIteratorFlags) QDirIterator(const QString & path, QDir::Filters filters, IteratorFlags flags = NoIteratorFlags) QDirIterator(const QString & path, const QStringList & nameFilters, QDir::Filters filters = QDir::NoFilter, IteratorFlags flags = NoIteratorFlags) ~QDirIterator() QFileInfo fileInfo() const QString fileName() const QString filePath() const bool hasNext() const QString next() QString path() const
QT給出的例子:
QDirIterator it("/etc", QDirIterator::Subdirectories); while (it.hasNext()) { qDebug() << it.next(); // /etc/. // /etc/.. // /etc/X11 // /etc/X11/fs // ... }
QStandardPaths用於處理系統標準路徑。
QString displayName(StandardLocation type) QString findExecutable(const QString & executableName, const QStringList & paths = QStringList()) QString locate(StandardLocation type, const QString & fileName, LocateOptions options = LocateFile) QStringList locateAll(StandardLocation type, const QString & fileName, LocateOptions options = LocateFile) void setTestModeEnabled(bool testMode) QStringList standardLocations(StandardLocation type) QString writableLocation(StandardLocation type) enum LocateOption { LocateFile, LocateDirectory } flags LocateOptions enum StandardLocation { DesktopLocation, DocumentsLocation, FontsLocation, ApplicationsLocation, ..., GenericConfigLocation }
這裏只簡單說一下QFileDialog類:
頭文件 | #include <QFileDialog> |
---|---|
模塊 | QT += widgets |
基類 | QDialog |
經常使用靜態成員函數:
QString getExistingDirectory( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly) QUrl getExistingDirectoryUrl( QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), Options options = ShowDirsOnly, const QStringList & supportedSchemes = QStringList())
QString getOpenFileName( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0) QStringList getOpenFileNames(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0) QUrl getOpenFileUrl( QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0, const QStringList & supportedSchemes = QStringList()) QList<QUrl> getOpenFileUrls( QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0, const QStringList & supportedSchemes = QStringList())
QString getSaveFileName( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0) QUrl getSaveFileUrl( QWidget * parent = 0, const QString & caption = QString(), const QUrl & dir = QUrl(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0, const QStringList & supportedSchemes = QStringList())
其中 QString & filter = QString()
表明文件過濾器,寫法以下:
QStringList ls= QFileDialog::getOpenFileNames(this ,tr("選用文件") ,QStandardPaths::standardLocations(QStandardPaths::DesktopLocation).at(0) ,tr("XML文件 (*.xml);;文本文件(*.txt"));