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"));