QT::QFileInfo

QFileInfo类参考
QFileInfo用于提供与系统无关的文件信息
#include<QFileInfo>
Public Types
        flags	PermissionSpec
Public Functions
        QFileInfo ()
        QFileInfo ( const QString & file )
        QFileInfo ( const QFile & file )
        QFileInfo ( const QDir & dir, const QString & file )
        QFileInfo ( const QFileInfo & fileinfo )
        ~QFileInfo ()
        QDir	absoluteDir () const
        QString	absoluteFilePath () const
        QString	absolutePath () const
        QString	baseName () const
        QString	bundleName () const
        bool	caching () const
        QString	canonicalFilePath () const
        QString	canonicalPath () const
        QString	completeBaseName () const
        QString	completeSuffix () const
        QDateTime	created () const
        QDir	dir () const
        bool	exists () const
        QString	fileName () const
        QString	filePath () const
        QString	group () const
        uint	groupId () const
        bool	isAbsolute () const
        bool	isBundle () const
        bool	isDir () const
        bool	isExecutable () const
        bool	isFile () const
        bool	isHidden () const
        bool	isReadable () const
        bool	isRelative () const
        bool	isRoot () const
        bool	isSymLink () const
        bool	isWritable () const
        QDateTime	lastModified () const
        QDateTime	lastRead () const
        bool	makeAbsolute ()
        QString	owner () const
        uint	ownerId () const
        QString	path () const
        bool	permission ( QFile::Permissions permissions ) const
        QFile::Permissions	permissions () 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 )
        qint64	size () const
        QString	suffix () const
        QString	symLinkTarget () const
        bool	operator!= ( const QFileInfo & fileinfo )
        bool	operator!= ( const QFileInfo & fileinfo ) const
        QFileInfo &	operator= ( const QFileInfo & fileinfo )
        bool	operator== ( const QFileInfo & fileinfo )
        bool	operator== ( const QFileInfo & fileinfo ) const
Related Non-Members
        typedef	QFileInfoList


详细描述:
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 = fi.completeBaseName(); // base = "archive.tar"

QString QFileInfo::completeSuffix () const
返回文件后缀名
例如:
QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.completeSuffix(); // 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<QFileInfo>的同义词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值