Qt文档译:QFileInfo

0.详细介绍
QFileInfo类提供了独立于系统的文件信息.它主要提供了文件系统中文件的名字和路径信息,以及指定文件的访问权限,判断它是一个文件还是符号链接.它还提供了获取文件大小,文件最后一次修改和阅读的时间的方法,它还可以用于获取Qt资源的信息.

QFileInfo的对象还可以用来指向文件的相对路径或者绝对路径,也就是说可以使用相对或绝对路径来构造QFileInfo的对象来使用.绝对文件路径以目录分隔符“/”(或在Windows上的驱动器规范)开始.相对文件名以目录名或文件名开始,并指定相对于当前工作目录的路径.举个例子:绝对路径的一个例子是字符串“/tmp/quartz”.相对路径可能看起来像“src/fatlib”.您可以使用isRelative()来检查QFileInfo是否使用相对文件路径.你可以调用函数makeAbsolute()来将文件的相对路径转化为绝对路径.

QFileInfo所工作的文件是在构造函数中设置的,当然你也可以在任何时候通过调用setFile()设置.使用exists()方法来判断文件是否存在和使用size()方法来获取文件的字节大小.

文件的类型可以通过isFile().isDir()和isSymLink()来判断.symLinkTarget()函数提供了symlink指向的文件的名称.
在Unix(包括Mac OS X)上,symlink拥有相同的尺寸()拥有它指向的文件,因为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上,符号链接(快捷键)是.lnk文件。报告的大小()是symlink(不是链接的目标),并使用QFile打开一个symlink打开.lnk文件.例如:

#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,后缀和完整的后缀.QFileInfo对象到Qt类创建的目录不会有拖尾文件分隔符.如果您希望在自己的文件info对象中使用尾随分隔符,只需将其中一个附加到构造函数或setFile()的文件名即可.
这里举个例子:

//Sample:
//使用1/myTest.c.tar.gz文件来构造QFileInfo对象.
QFileInfo info("1/myTest.c.tar.gz");
//获取文件名.  myTest.c.tar.gz
QString fileName = info.fileName();
//获取文件相对或绝对路径. 1/myTest.c.tar.gz
QString filePath = info.filePath();
//返回文件的相对或绝对路径.不包括文件名. 1
QString path = info.path();
//返回文件名的最后一个'.'之后的字符串. gz
QString suffix = info.suffix();
//返回文件名第一个'.'之后的所有字符串. c.tar.gz
QString completeSuffix = info.completeSuffix();
//返回文件名第一个'.'之前的字符串. myTest
QString baseName = info.baseName();
//返回文件名最后一个'.'之前的所有字符串. myTest.c.tar
QString completeBaseName = info.completeBaseName();
//返回文件的绝对路径.(不包括文件名)
.C:/Users/Administrator/Desktop/test/test/1
QString absolutePath = info.absolutePath();
//返回文件的绝对路径.(包括文件名)C:/Users/Administrator/Desktop/test/test/1/myTest.c.tar.gz
QString absoluteFilePath = info.absoluteFilePath();

文件的创建时间由created()方法获得,lastModifyed()方法和lastRead()方法获得最后一次修改和阅读的时间.至于文件的访问权限则可以由 isReadable(),
isWritable() and isExecutable()来判断.该文件的所有权可从所有者().ownerId().group()和groupId()获得.您可以使用 permission()函数检查一个文件的权限和所有权.

1.所有函数方法
构造函数:
1.1.1->QFileInfo::QFileInfo()
1.1.2->QFileInfo::QFileInfo(const QString & file)
1.1.3->QFileInfo::QFileInfo(const QFile & file)
1.1.4->QFileInfo::QFileInfo(const QDir & dir, const QString & file)
1.1.5->QFileInfo::QFileInfo(const QFileInfo & fileinfo)
1.1.6->QFileInfo::~QFileInfo()

//返回文件所在目录的绝对路径.作为QDir对象的参数.
1.2->QDir QFileInfo::absoluteDir() const

//返回文件的绝对路径.(包括文件名.)
1.3->QString QFileInfo::absoluteFilePath() const
//返回文件的绝对路径.(不包括文件名.)
1.4->QString QFileInfo::absolutePath() const

//Sample:
QFileInfo info("1/myTest.c.tar.gz");
//返回文件的绝对路径.(不包括文件名)
.C:/Users/Administrator/Desktop/test/test/1
QString absolutePath = info.absolutePath();
//返回文件的绝对路径.(包括文件名)C:/Users/Administrator/Desktop/test/test/1/myTest.c.tar.gz
QString absoluteFilePath = info.absoluteFilePath();

//返回文件名中第一个’.’之前的字符串.
1.5->QString QFileInfo::baseName() const
//返回文件的包名.
1.6->QString QFileInfo::bundleName() const

//判断是否启用了缓存.
1.7->bool QFileInfo::caching() const
//返回规范化路径,包括文件名,即没有符号链接或冗余“.”或“..”元素的绝对路径.
如果该文件不存在,则返回空字符串。
1.8->QString QFileInfo::canonicalFilePath() const
//返回文件的路径规范路径(不包括文件名),即没有符号链接或冗余“.”或“..”元素的绝对路径.如果该文件不存在,则圣路径()返回空字符串.
1.9->QString QFileInfo::canonicalPath() const

//返回文件名最后一个’.’之前的所有字符串.例子看前面.
1.10->QString QFileInfo::completeBaseName() const
//返回文件名第一个’.’之后的所有字符串.
1.11->QString QFileInfo::completeSuffix() const

//返回文件的创建日期和时间.
1.12->QDateTime QFileInfo::created() const
//返回文件相对工作目录的路径作为QDir对象的参数.
1.13->QDir QFileInfo::dir() const
//判断指定文件是否存在.注意:如果文件是指向非现有文件的符号链接,则返回false.
1.14->bool QFileInfo::exists() const
1.14->bool QFileInfo::exists(const QString & file) [static]

//返回文件名.不包括路径.注意,如果这个QFileInfo对象被赋予一条以斜杠结尾的路径,那么文件的名称将被认为是空的.
1.15->QString QFileInfo::fileName() const
//返回文件名以及路径,可能是相对路径也可能是绝对路径,看你的设置.
1.16->QString QFileInfo::filePath() const

//返回文件所在的组的名字,在Windows下会返回空字符串.在Linux/Unix下,会返回相应的用户组名字.
1.17->QString QFileInfo::group() const
1.18->uint QFileInfo::groupId() const
//返回文件的所属用户的名字.同上.
1.19->QString QFileInfo::owner() const
1.20->uint QFileInfo::ownerId() const

//判断文件的路径是否是绝对路径.
1.21->bool QFileInfo::isAbsolute() const
如果这个对象指向一个捆绑包或者在Mac OS X上的一个捆绑包,返回true;否则返回false.
1.22->bool QFileInfo::isBundle() const
//判断是否是文件目录.
1.23->bool QFileInfo::isDir() const
//判断是否可执行.
1.24->bool QFileInfo::isExecutable() const
//判断是否是文件.
1.25->bool QFileInfo::isFile() const
//判断是否被隐藏.
1.26->bool QFileInfo::isHidden() const
//如果文件路径可以直接与本机api一起使用,则返回true.如果该文件由Qt内部的虚拟文件系统支持,如Qt资源系统,则返回false.
1.27->bool QFileInfo::isNativePath() const
//判断是否可读.
1.28->bool QFileInfo::isReadable() const
//判断是否是相对路径.
1.29->bool QFileInfo::isRelative() const
//判断是否是根目录.
1.30->bool QFileInfo::isRoot() const
//判断是否是符号链接.
1.31->bool QFileInfo::isSymLink() const
//判断是否可写.
1.32->bool QFileInfo::isWritable() const
//返回文件最后一次被修改的时间日期.
1.33->QDateTime QFileInfo::lastModified() const
//返回文件最后一次被访问的时间日期.
1.34->QDateTime QFileInfo::lastRead() const

//把文件的相对路径转化为绝对路径.返回是否成功转换.
1.35->bool QFileInfo::makeAbsolute()

//Sample:
QFileInfo info("1/myTest.c.tar.gz");
//   1/myTest.c.tar.gz
QString filePath = info.filePath();
bool ok = info.makeAbsolute();
if (ok)
    {
        //可以看到转化为绝对路径了.
        //C:/Users/TF/Desktop/test/test/1/myTest.c.tar.gz
        filePath = info.filePath();
    }

//返回文件的路径,不包含文件名.
1.36->QString QFileInfo::path() const
//判断文件权限.
1.37->bool QFileInfo::permission(QFile::Permissions permissions) const
//获得文件的权限.
1.38->QFile::Permissions QFileInfo::permissions() const
//刷新关于文件的属性信息.
1.39->void QFileInfo::refresh()
//如果激活了,则可以缓存文件信息.
1.40->void QFileInfo::setCaching(bool enable)

//修改QFileInfo对象的文件名路径参数.
1.41->void QFileInfo::setFile(const QString & file)
1.41->void QFileInfo::setFile(const QFile & file)
1.41->void QFileInfo::setFile(const QDir & dir, const QString & file)

//返回文件的字节大小.
1.42->qint64 QFileInfo::size() const
//返回文件名最后一个’.’之后的字符串.
1.43->QString QFileInfo::suffix() const

2.性能问题
QFileInfo的一些函数查询文件系统,但出于性能方面的原因,有些函数只对文件名本身进行操作.例如:为了返回相对文件名的绝对路径,绝对路径()必须查询文件系统.然而,path()函数可以直接处理文件名,因此速度更快.
注意:为了提高性能,QFileInfo会缓存有关该文件的信息.

为了提高性能,QFileInfo会缓存有关该文件的信息.因为文件可以由其他用户或程序更改,甚至可以由同一个程序的其他部分进行更改,所以有一个刷新文件信息的函数:refresh().如果您想要关闭QFileInfo的缓存,并强制它每次从它调用set缓存(false)时访问文件系统.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值