首页 > 其他分享 >QFileInfo

QFileInfo

时间:2023-11-18 19:11:33浏览次数:31  
标签:文件 const QFileInfo returns bool QString

QFileInfo 

#include <QFileInfo>

 

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
QDateTime birthTime() const
QString bundleName() const
bool caching() const
QString canonicalFilePath() const
QString canonicalPath() const
QString completeBaseName() const
QString completeSuffix() const
QDir dir() const
bool exists() const
QString fileName() const
QString filePath() const
QDateTime fileTime(QFile::FileTime time) 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 isNativePath() const
bool isReadable() const
bool isRelative() const
bool isRoot() const
bool isSymLink() const
bool isWritable() const
QDateTime lastModified() const
QDateTime lastRead() const
bool makeAbsolute()
QDateTime metadataChangeTime() const
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
void swap(QFileInfo &other)
QString symLinkTarget() const
bool operator!=(const QFileInfo &fileinfo) const
QFileInfo & operator=(const QFileInfo &fileinfo)
QFileInfo & operator=(QFileInfo &&other)
bool operator==(const QFileInfo &fileinfo) const

 

详细说明

QFileInfo类提供独立于系统的文件信息。

 

QFileInfo提供有关文件在文件系统中的名称和位置(路径)、访问权限以及它是目录还是符号链接等信息。还提供文件的大小和上次修改/读取时间。QFileInfo还可以用于获得关于Qt资源的信息。

 

QFileInfo可以指向具有相对或绝对文件路径的文件。绝对文件路径以目录分隔符“/”(或Windows上的驱动器规范)开头。相对文件名以目录名或文件名开头,并指定相对于当前工作目录的路径。绝对路径的一个例子是字符串“/tmp/quartz”。相对路径可能看起来像“src/fatlib”。您可以使用函数isRelative()来检查QFileInfo使用的是相对文件路径还是绝对文件路径。您可以调用函数makeAbsolute()将相对QFileInfo的路径转换为绝对路径。

 

QFileInfo处理的文件是在构造函数中或更高版本中使用setFile()设置的。使用exists()查看文件是否存在,使用size()获取其大小。

 

文件的类型是通过isFile()、isDir()和isSymLink()获得的。函数的作用是提供符号链接指向的文件的名称。

 

在Unix(包括macOS和iOS)上,符号链接的大小与它指向的文件相同(),因为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文件。报告的size()是符号链接的大小(而不是链接的目标),使用QFile打开符号链接会打开.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()、suffix()或completeSuffix()提取。Qt类创建的目录的QFileInfo对象将没有尾随文件分隔符。如果您希望在自己的文件信息对象中使用尾随分隔符,只需在赋予构造函数或setFile()的文件名后附加一个分隔符即可。

 

文件的日期由created()、lastModified()、lastRead()和fileTime()返回。有关文件访问权限的信息是通过isReadable()、isWritable()和isExecutible()获得的。文件的所有权可从owner()、ownerId()、group()和groupId()获得。您可以使用permission()函数在一条语句中检查文件的权限和所有权。

 

注意:在NTFS文件系统上,由于性能原因,默认情况下会禁用所有权和权限检查。要启用它,请包括以下行:

  extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;

 

然后通过将qt_ntfs_Permission_lookup递增和递减1来打开和关闭权限检查。

 

  qt_ntfs_permission_lookup++; // turn checking on
  qt_ntfs_permission_lookup--; // turn it off again

 

 

性能问题

QFileInfo的一些函数查询文件系统,但出于性能原因,有些函数只对文件名本身进行操作。例如:要返回相对文件名的绝对路径,absolutePath()必须查询文件系统。然而,path()函数可以直接处理文件名,因此速度更快。

 

注意:为了提高性能,QFileInfo缓存有关文件的信息。

 

因为文件可以由其他用户或程序更改,甚至可以由同一程序的其他部分更改,所以有一个函数可以刷新文件信息:refresh()。如果您想关闭QFileInfo的缓存,并在每次向其请求信息时强制其访问文件系统,请调用setCaching(false)。

 

###################################

标签:文件,const,QFileInfo,returns,bool,QString
From: https://www.cnblogs.com/herd/p/17498276.html

相关文章

  • Qt 文件目录操作 QDir、QFile、QTemporaryDir/File、QTextStream、QDataStream、QSett
    摘要:  这一篇Qt博文主要介绍在Qt开发中对于文件目录操作相关处理的时候可以用到哪些类,这些类的作用是什么,大致应该怎么用,类的常用类方法及相关需要注意的事项等等,更加细致的需根据类名查找翻阅官方帮助文档。  QT提供的与文件和目录操作相关的类有以下几个:QDir:类提供对......