QDir,QFile
枚举
enum Filter { Dirs, AllDirs, Files, Drives, …, CaseSensitive } flags Filters enum SortFlag { Name, Time, Size, Type, …, LocaleAware } flags SortFlags
函数描述QString absoluteFilePath(const QString &fileName) const返回文件的绝对位置+文件名,不检查是否存在,exist去检查就好QString absolutePath() constQDir的绝对路径QString dirName() const返回dir路径名QString filePath(const QString &fileName) const返回路径名QString path() const路径QString relativeFilePath(const QString &fileName) const返回路径名int count()const返回的是该目录下文件夹和文件的数量+./+../QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const每一个文件或者文件的对象列表QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const文件和目录的名称列表QDir::SortFlags sorting() const返回排序的规律QDir home()QString homePath()QDir root()QString rootPath()QDir temp()QString tempPath()提供一系列文件信息,前缀,后缀,大小,创建时间…..相当于文件的属性,详细信息
函数描述QDir absoluteDir() const绝对位置的DirQDir dir() const返回dirQString absoluteFilePath() const路径名QString path() const路径名QString absolutePath() constQString baseName() const名称第一部分QString suffix() const文件后缀qint64 size() const大小QDateTime birthTime() const创建时间QDateTime lastModified() const最后修改时间QDateTime lastRead() const最后访问时间QDateTime metadataChangeTime() const比如权限被修改时间bool permission(QFile::Permissions permissions) const是否具有文件权限QFile::Permissions permissions() const文件的权限QString owner() const文件属于谁uint ownerId() const文件主的idQString bundleName() const包名称bool caching() const是否为缓存QString canonicalFilePath() const链接路径QString canonicalPath() const链接路径QString completeBaseName() const文件名称,去掉后缀QString completeSuffix() const文件后缀,去掉第一部分也就是文件名称bool exists() const判端是否存在QString fileName() const文件的名称QString filePath() const文件的路径QString group() const文件的组名称,unix里面uint groupId() const文件的组的idbool isAbsolute() const是否为绝对路径bool isBundle() const是否为包bool isExecutable() const可执行bool isReadable() const可读bool isWritable() const可写bool isFile() const文件,而不是目录bool isDir() const是否为目录bool isHidden() const隐藏文件bool isNativePath() const本地文件,而不是资源文件下的东西bool isRelative() const相对文件,在资源文件下,或者默认目录下的bool isRoot() const根bool isSymLink() const是否链接文件QString symLinkTarget() const链接文件的名字void refresh()刷新文件的信息void setCaching(bool enable)设为缓存void setFile(const QString &file)设置文件void setFile(const QFile &file)void setFile(const QDir &dir, const QString &file) void readAllFile(const QString & path) { QTextStream cout(stdout); cout.setFieldWidth(20); cout<<endl; cout.setFieldAlignment(QTextStream::AlignLeft); QDir dir(path); if (!dir.exists()) return ; QFileInfoList list = dir.entryInfoList(QDir::Files|QDir::Dirs,QDir::Time); int i = 0; do{ QFileInfo fileInfo = list.at(i); if(fileInfo.fileName()=="." | fileInfo.fileName()=="..") { i++; continue; } bool bisDir = fileInfo.isDir(); if(bisDir) { readAllFile(fileInfo.filePath()); } else { cout<<fileInfo.path()<<fileInfo.fileName()<<fileInfo.created().toString ("yyyy-MM-d h:m:s")<<fileInfo.size()/(1024.0)<<"\n"; } i++; }while(i < list.size()); } void rmAllFile(const QString &path) { QDir dir(path); if (!dir.exists()) return ; QFileInfoList list = dir.entryInfoList(QDir::Files|QDir::Dirs,QDir::Time); int i = 0; do{ QFileInfo fileInfo = list.at(i); if(fileInfo.fileName()=="." | fileInfo.fileName()=="..") { i++; continue; } bool bisDir = fileInfo.isDir(); if(bisDir) { rmAllFile(fileInfo.filePath()); } else { dir.remove(fileInfo.absoluteFilePath()); } i++; }while(i < list.size()); dir.rmpath(path); }text的流,相同的data流也存在
函数描述bool atEnd() const流指针是否在末尾qint64 pos() const流指针位置QString read(qint64 maxlen)读文件QString readAll()读文件QString readLine(qint64 maxlen = 0)读文件void reset()充值流默认设置void resetStatus()重置流状态bool seek(qint64 pos)跳转void setCodec(QTextCodec *codec)设置编码格式void setCodec(const char *codecName)void setDevice(QIODevice *device)设置设备void setFieldAlignment(QTextStream::FieldAlignment mode)对齐方式void setFieldWidth(int width)宽度void setGenerateByteOrderMark(bool generate)会插入bom标记void setIntegerBase(int base)进制设置void setNumberFlags(QTextStream::NumberFlags flags)设置标志void setPadChar(QChar ch)空白填充void setRealNumberPrecision(int precision)设置小数的位数void setStatus(QTextStream::Status status)流状态status:
函数值描述QTextStream::Ok0The text stream is operating normally.QTextStream::ReadPastEnd1The text stream has read past the end of the data in the underlying device.QTextStream::ReadCorruptData2The text stream has read corrupt data.QTextStream::WriteFailed3The text stream cannot write to the underlying device. /* * QtextStream相当于c++的iostram * pos位置 seek跳转 atend是否末尾 * */ FileIo::FileIo(QWidget *parent) : QWidget(parent) { setWindowTitle("file system"); QFile file("E:/1.txt"); QTextStream out(&file); QTextStream cout(stdout); file.open(QFile::ReadWrite|QFile::Text); if(out.atEnd())cout<<"this is end\n"; cout<<"pos:"<<out.pos()<<endl; //位置 out.setCodec("utf-8"); //编码 out.seek(0); //跳转位置 cout.setIntegerBase(10); //输出控制,二进制 cout.setRealNumberPrecision(2); //小数的位数是2,最多是2 cout<<out.readAll()<<endl; cout<<out.device()<<endl; cout<<bin<<5023.5/1024.0; file.close(); }