QFileInfo类
详细描述:
QFileInfo类用于提供与系统无关的文件信息。QFileInfo类提供了关于文件名,文件路径,访问权限,判断文件时目录或符号链接等相关信息。
同样也提供文件大小和最近修改/读写时间等信息。QFileInfo也可用于获取QT资源信息。
QFileInfo可以指向由相对路径/绝对路径指定的一个文件,绝对路径开始于分隔符'/'(也可以是由windows系统指定的驱动符)
相对路径开始于目录名或者一个相对当前工作目录的文件名。绝对路径通常用字符串表示比如“/tmp/quartz”。相对路径类似于“src/fatlib”。
可以通过函数isRelative()检车QFileInfo被用于相对路径还是绝对路径。可以调用makeAbsolute()函数把相对路径转换为绝对路径。
一个QFileInfo文件可以通过构造函数运行或者之后调用setFile(),函数exists()可以判断文件是否存在,函数size()返回文件大小。
文件类型可以通过isFile(),isDir(),isSymLink()获取,SymLinkTarget()可以获取符号链接所指向的文件名。
在UNIX(包括Mac OS X )中,也可以通过符号链接指向的文件返回其大小(通过size()函数),因为UNIX符号链接句柄类似于通过QFile高效的打开符号句柄。
例如:
#ifdef Q_OS_UNIX
QFileInfo info1("/home/bob/bin/untabify");
info1.isSymLink(); // returns true
info1.absoluteFilePath(); // returns "/home/bob/bin/untabify"
info1.size(); // returns 56201
info1.symLinkTarget(); // returns "/opt/pretty++/bin/untabify"
QFileInfo info2(info1.symLinkTarget());
info2.isSymLink(); // returns false
info2.absoluteFilePath(); // returns "/opt/pretty++/bin/untabify"
info2.size(); // returns 56201
#endif
在windows下符号链接好比快捷方式,size()返回快捷方式大小()(并非实际文件大小),通过QFile 打开一个快捷方式,例如:
#ifdef Q_OS_WIN
QFileInfo info1("C:\\Documents and Settings\\Bob\\untabify.lnk");
info1.isSymLink(); // returns true
info1.absoluteFilePath(); // returns "C:/Documents and Settings/Bob/untabify.lnk"
info1.size(); // returns 743
info1.symLinkTarget(); // returns "C:/Pretty++/untabify"
QFileInfo info2(info1.symLinkTarget());
info2.isSymLink(); // returns false
info2.absoluteFilePath(); // returns "C:/Pretty++/untabify"
info2.size(); // returns 63942
#endif
文件名内容可以通过path()和fileName()提取,fileName()返回部分也可以通过baseName(),suffix()或者completeSuffix()提取,
通过QT类创建的QFileInfo目录通常没有文件分隔符,,如果需要在文件对象中运用追加的分隔符,可以通过构造函数或者setFile()
给文件名追加一个。
文件信息可以通过creates(),lastModified()和lastRead()返回,文件的访问权限可以通过isReadable(),isWritable(),isExcutable()获取,
可以通过oermission()函数检车文件在文革状态下的权限和文件归属权。
Performance Issues:
有些QFileInfo函数可以查询文件系统,但出于性能考虑,有些函数只能通过文件名本身来操作,例如:为了返回文件名时相对路径还是绝对路径,
可以通过absolutePath()查询文件系统,然而函数patt()可以直接操作文件名,而且更快。
提示:为了提高性能,QFileInfo会缓存一部分文件信息。引文文件可以被其他用户或程序改变,或者是其他用户的类似程序,函数refresh()用于刷新文件信息。
如果你想关闭QFileInfo文件缓存信息,强制只能通过文件系统来获取文件信息,可以通过调用setCaching(false).
Member Function Documentation:
QFileInfo::QFileInfo ()
创建一个空的QFileInfo对象,注意该对象不能被其他文件引用或引用其他文件信息。
参考setFile().
QFileInfo::QFileInfo ( const QString & file )
通过给定的参数filev创建一个QFileInfo对象,参数file可以包含一个绝对路径或者相对路径参考: setFile(), isRelative(), QDir::setCurrent(), QDir::isRelativePath().
QFileInfo::QFileInfo ( const QFile & file )
通过参数file给定的信息构建一个QFileInfo对象,如果参数file包含相对路径,则QFileInfo也包含相对路径。
参考: isRelative().
QFileInfo::QFileInfo ( const QDir & dir, const QString & file )
通过参数dir,file给定的文件和目录信息构建一个QFileInfo对象。
如果dir包含相对路径,则QFileInfo也包含相对路径
如果file是绝对路径,则目录参数dir会被忽略。
参考: isRelative().
QFileInfo::QFileInfo ( const QFileInfo & fileinfo )
赋值构造函数
QFileInfo::~QFileInfo ()
析构函数,销毁QFileInfo 同时释放相关资源
QDir QFileInfo::absoluteDir () const
返回文件的绝对路径
参考dir(), filePath(), fileName(), isRelative().
QString QFileInfo::absoluteFilePath () const
返回包含文件名的绝对路径。
绝对路径包含完整的路径名和文件名,在UNIX通常开始于root,‘/’目录。在WINDOWS中开始于驱动器名称比如“D:/../”,
除非是网络共享并且没有映射到磁盘驱动器,这是路径名开始于'//shareName',QFileInfo会大写驱动符。提示:QDir的处理方法与此不同。
下面的代码片段显示了这点:
QFileInfo fi("c:/temp/foo"); => fi.absoluteFilePath() => "C:/temp/foo"
该函数的返回值类似于filePath(),除非isRelative()返回为true,与canonicalFilePath()相反,会返回完整的符号链接名,
冗长的目录名。
如果QFileInfo为空可以通过QDir::currentPath()返回路径名。
参考: filePath(), canonicalFilePath(), isRelative().
QString QFileInfo::absolutePath () const
返回文件的绝对路径,不包含文件名。
在UNIX通常开始于root,‘/’目录。在WINDOWS中开始于驱动器名称比如“D:/../”,
除非是网络共享并且没有映射到磁盘驱动器,这是路径名开始于'//shareName'
警告:如果QFileInfo是通过一个空的QString初始化的,则该函数的行为未定义。
可以参考:absoluteFilePath(), path(), canonicalPath(), fileName(), isRelative().
QString QFileInfo::baseName () const
返回文件名,不包含路径,文件后缀。
例如:
QFileInfo fi("/tmp/archive.tar.gz");
QString base = fi.baseName(); // base = "archive"
该文件名可通用语所有的平台,独立于文件名协议。
可以参考:fileName(), suffix(), completeSuffix(), completeBaseName().
QString QFileInfo::bundleName () const
返回包名称。
在MAC OS X中如果isBundle()返回true则该函数返回包文件的本地名称。在其他所有平台上函数返回一个空字符串。
例如:
QFileInfo fi("/Applications/Safari.app");
QString bundle = fi.bundleName(); // name = "Safari"
可以参考:isBundle(), filePath(), baseName(), extension().
bool QFileInfo::caching () const
如果设置了QFileInfo文件信息缓存则返回true,否则返回false
可以参考:setCaching() and refresh().
QString QFileInfo::canonicalFilePath () const
返回一个标准的路径包含文件空,等等。绝对路径不包含符号链接和后缀名。
如果文件不存在,函数返回一个空的字符串。
可以参考: filePath(), absoluteFilePath(), dir().
QString QFileInfo::canonicalPath () const
返回标准路径不包含文件名等等。。绝对路径不包含符号链接和后缀名。
如果文件不存在,函数返回一个空的字符串。
QString QFileInfo::completeBaseName () const
返回完整的文件名包括后缀名,不包含路径。只包含靠近文件名的一个后缀名。
例如:
QFileInfo fi("/tmp/archive.tar.gz");
QString base = https://www.wendangku.net/doc/0518681342.html,pleteBaseName(); // base = "archive.tar"
QString QFileInfo::completeSuffix () const
返回文件后缀名
例如:
QFileInfo fi("/tmp/archive.tar.gz");
QString ext = https://www.wendangku.net/doc/0518681342.html,pleteSuffix(); // ext = "tar.gz"
QDateTime QFileInfo::created () const
返回文件被创建时的日期和时间。
早大多数UNIX系统中返回最近被修改的状态,状态修改出现在文件被创建时,也出现在当文件被用户写入或设置文件信息,比如文件权限。
如果既不是创建时间也不是最后的修改状态,则返回结果类似于lastModified()。
参考:lastModified(),lastRead().
QDir QFileInfo::dir () const
返回对象的父目录的路径。
注意:QDir总是返回一个对象父目录,即便QFileInfo本身就代表目录。
下面的每一行,dir()都返回一个QDir类似"~/examples/191697".
QFileInfo fileInfo1("~/examples/191697/.");
QFileInfo fileInfo2("~/examples/191697/..");
QFileInfo fileInfo3("~/examples/191697/main.cpp");
下面的每一行,dir()以‘.’返回一个QDir.
QFileInfo fileInfo4(".");
QFileInfo fileInfo5("..");
QFileInfo fileInfo6("main.cpp");
可以参考: absolutePath(), filePath(), fileName(), isRelative(), and absoluteDir().
bool QFileInfo::exists () const
如果文件存在则返回true,否则返回False。
注意:如果符号链接指向的文件不存在也返回false。
QString QFileInfo::fileName () const
返回文件名,不包含路径。
例如:
QFileInfo fi("/tmp/archive.tar.gz");
QString name = fi.fileName(); // name = "archive.tar.gz"
注意,如果QFileInfo对象给定的路径以‘/’结尾,则文件名被认定为空。
可以参考:isRelative(), filePath(), baseName(), and extension().
QString QFileInfo::filePath () const
返回文件名,包括路径(绝对或相对)
可参考:absoluteFilePath(), canonicalFilePath(), and isRelative().
QString QFileInfo::group () const
返回文件组,在WINDOWS下如果文件没有组,或者出现一个错误,则返回空字符串。
在UNIX下可以以递文件被创建时间递减时间的方式返回组名。
参考:groupId(), owner(), and ownerId().
uint QFileInfo::groupId () const
返回文件所属组的ID号。
在WINDOWS下如果文件没有组则返回-2.
bool QFileInfo::isAbsolute () const
如果是绝对路径则返回true,如果是相对路径则返回false。
可参考 isRelative()
bool QFileInfo::isBundle () const
在MAC OS X中如果对象指向一个包或者符号链接指向包则返回true,否则返回false。
bool QFileInfo::isDir () const
如果对象指向一个目录或者符号链接指向目录则返回true,否则返回false。
参考:bool QFileInfo::isDir () const
bool QFileInfo::isExecutable () const
如果文件时可执行文件则返回true,否则返回false。
bool QFileInfo::isFile () const
如果对象指向文件或者符号链接指向文件则返回true,如果对象不指向一个文件比如目录则返回false。
bool QFileInfo::isHidden () const
如果是一个隐藏文件则返回true,否则返回false。
在UNIX下如果文件时'.','..'则返回true。即便QDir::entryList 视他们为可见的。
bool QFileInfo::isReadable () const
如果用户可读取该文件则返回true,否则返回false
可参考: isWritable(), isExecutable(), and permission().
bool QFileInfo::isRelative () const
如果文件路径名是相对的则返回true,否则返回false(在UNIX下如果以'/'开始则是绝对路径)参考:isAbsolute()
bool QFileInfo::isRoot () const
如果只想一个目录,或者符号链接指向目录,同时该目录为root目录则返回true,否则返回false
bool QFileInfo::isSymLink () const
如果对象是指符号链接(WINDOWS下称快捷方式)则返回true,否则返回false。
在UNIX(包括MAC OS X )下,打开一个符号链接就好比打开一个符号标签。
比如:
QFileInfo info(fileName);
if (info.isSymLink())
fileName = info.symLinkTarget();
注意:如果符号链接指向一个不存在的文件,则exists()返回false
可参考isFile(), isDir(), and symLinkTarget().
bool QFileInfo::isWritable () const
如果文件可写则返回true,否则返回false
可参考 isReadable(), isExecutable(), and permission().
QDateTime QFileInfo::lastModified () const
返回文件最近被修改的时间和日期。
可参考 created() and lastRead().
QDateTime QFileInfo::lastRead () const
返回文件最近被访问的时间和日期。
bool QFileInfo::makeAbsolute ()
如果文件路径不是绝对路径形式则转换成绝对路径。转换成功则返回true,如果文件路径原本就为绝对路径则返回false
可参考filePath() and isRelative().
QString QFileInfo::owner () const
返回文件的拥有者。在某系统上如果文件没有拥有者或者一个错误出现,则返回空的字符串
在UNIX下,如果该文件被多个用户拥有,则以递减的时间返回用户。
可参考 ownerId(), group(), and groupId().
uint QFileInfo::ownerId () const
返回文件拥有者ID
在WINDOWS下如果文件没有拥有者则返回-2.
QString QFileInfo::path () const
返回文件路径,不包括文件名。
注意:如果QFileInfo对象给定的路径是以'/'结尾的,则文件名被视为空且函数返回整个路径名。
可参考filePath(), absolutePath(), canonicalPath(), dir(), fileName(), and isRelative().
bool QFileInfo::permission ( QFile::Permissions permissions ) const
测试文件的权限,参数permission可以使多种文件权限标志的组合。
在系统下如果文件没有设置权限则该函数返回true
例如:
QFileInfo fi("/tmp/archive.tar.gz");
if (fi.permission(QFile::WriteUser | QFile::ReadGroup))
qWarning("I can change the file; my group can read the file");
if (fi.permission(QFile::WriteGroup | QFile::WriteOther))
qWarning("The group or others can change the file");
可参考:isReadable(), isWritable(), and isExecutable().
QFile::Permissions QFileInfo::permissions () const
返回文件被赋予的完整权限。
void QFileInfo::refresh ()
刷新与文件相关的缓存,下粗读取文件时一个新的文件缓存就会被重建。
提示:在WINDOWS CE中,在文件系统下去检测一个文件改变的时间可能会产生延迟。
void QFileInfo::setCaching ( bool enable )
如果参数enable为true则设置文件信息缓存,如果为false则禁止。
QFileInfo第一次从文件系统读取与文件相关的信息时这个缓存是很有必要的,但以后通常不必设定缓存。
该缓存默认下会被设定。
可参考:refresh() and caching().
void QFileInfo::setFile ( const QString & file )
通过参数file设定由QFileInfo提供于文件相关的信息。
参数file可包含绝对路径或者相对路径,绝对路径开始于分隔符(UNIX下为'/')或者驱动符(WINDOWS 下).
相对路径名开始于一个目录过着一个相对于当前目录的文件名
例如:
QString absolute = "/local/bin";
QString relative = "local/bin";
QFileInfo absFile(absolute);
QFileInfo relFile(relative);
QDir::setCurrent(QDir::rootPath());
// absFile and relFile now point to the same file
QDir::setCurrent("/tmp");
// absFile now points to "/local/bin",
// while relFile points to "/tmp/local/bin"
可参考: isFile(), isRelative(), QDir::setCurrent(), and QDir::isRelativePath().
void QFileInfo::setFile ( const QFile & file )
重载函数
void QFileInfo::setFile ( const QDir & dir, const QString & file )
重载函数
qint64 QFileInfo::size () const
以字节方式返回文件大小,如果文件不存在或者无法获取则返回0.
可参考exists()。
QString QFileInfo::suffix () const
返回文件后缀名。且是构成文件名的最后一个'.'后的后缀符。
例如:
QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.suffix(); // ext = "gz"
QString QFileInfo::symLinkTarget () const
返回符号链接(WINDOWS下为快捷方式)指向的文件或目录,如果该对象不是符号链接则返回空。
该文件/目录名可能不代表一个存在的文件,仅仅是一个字符串,函数exists()可判断符号链接指向的文件是否存在。
参考exists(), isSymLink(), isDir(), and isFile().
QFileInfo & QFileInfo::operator= ( const QFileInfo & fileinfo ) 把一个QFileInfo对象赋值给另外一个QFileInfo
bool QFileInfo::operator!= ( const QFileInfo & fileinfo )
bool QFileInfo::operator!= ( const QFileInfo & fileinfo ) const bool QFileInfo::operator== ( const QFileInfo & fileinfo )
bool QFileInfo::operator== ( const QFileInfo & fileinfo ) const 用于判断两个QFileInfo对象是否相等。
警告:不能判断两个不同的符号链接指向的同一个文件。
警告:在WINDOWS指向同一个文件的长文件名和段文件名是指不同的文件。
typedef QFileInfoList
QList