文档库 最新最全的文档下载
当前位置:文档库 › QFileInfo

QFileInfo

QFileInfo
QFileInfo

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的同义词。

相关文档