部分内容来自:https://blog.csdn.net/Amnes1a/article/details/65444966
QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接等等。并且,通过这个类,可以修改文件的大小和最后修改、读取时间。同时,QFileInfo类也可以用来取到Qt 资源的相关信息。
QFileInfo可以表示绝对路径或相对路径的文件。其中,绝对路径就是以"/"开始的路径(或者在Windows系统上就是以某个盘符开始的路径)。相对路径就是相对于当前工作目录的一个文件或目录。我们在开发中可以使用该类的成员函数isRelative() 来判断一个QFileInfo表示的是一个相对路径还是一个绝对路径,也可以使用makeAbsolute()将一个相对路径转换为一个绝对路径。
可以使用exists() 函数判断一个文件是否存在,使用size()函数获取文件的大小。成员函数isFile()、isDir()、isSymLink() 可以判断文件的类型(普通文件、目录或是符号链接)。
若QFileInfo当前代表的是一个符号链接,symLinkTarget() 函数返回符号链接所指向的文件。在Unix平台上,包括macOS和iOS,符号链接和它所指向的文件具有同样的大小,因为Unix透明的看待普通文件和符号链接;同样,打开一个符号链接进行读写时,其实是打开了它所指向的真实文件。例如:
#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() 函数返回的是符号链接本身的大小,同样,打开一个 .lnk 文件就是打开 .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
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
这样一来,我们可以方便的通过递增或递减这个变量使能或禁用权限检查功能:
qt_ntfs_permission_lookup++; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again
函数名
描述
baseName
文件名(不包含完整后缀,不存在.分隔符)
completeBaseName
完整文件名(不包含最后一个后缀,可能存在.分隔符)
suffix
最后一个后缀(从文件名最后一个.分隔符开始)
completeSuffix
完整后缀(从文件名第一个.分隔符开始)
path
返回文件的路径,不包括文件名。但是,如果QFileInfo对象表示的是一个已"/"结尾的路径,那么文件名被认为是空的,此时,该函数返回整个完整路径。
filePath
返回文件名,包括路径(可能是绝对路径,也可能是相对路径)。
fileName
只返回文件名,不包括路径。注意,如果QFileInfo对象表示的是一个以"/"结尾的路径,那么该函数返回空字符串。
dir
返回一个文件父目录路径作为QDir对象。
absoluteDir
返回一个文件绝对路径作为QDir对象。
absolutePath
返回文件的绝对路径,不包括文件名。
absoluteFilePath
返回一个文件名的绝对路径。在Unix系统上,会返回一个已"/"开始的目录;在Windows平台上,返回一个以驱动器盘符开始的目录。
canonicalPath
返回文件路径(不包含文件名),是绝对路径;
canonicalFilePath
规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换成绝对路径名,这与调用 absolutefilePath() 方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的元素(比如“.”和“…”)、分析符号连接(对于 UNIX 平台),以及将驱动器名转换成标准大小写形式(对于 Microsoft Windows 平台)。
函数名
描述
isReadable
是否可读
isWriteable
是否可写
isExecutable
是否可执行
函数名
描述
owner
文件所属者
ownerId
文件所属者的ID
group
文件所属组
groupId
文件所属组的ID
函数名
描述
created
文件创建时的日期和本地时间
lastModified
文件最新一次被修改的日期和本地时间
lastRead
文件最新一次被读的日期和本地时间
============================relative file path============================
=================QFileInfo("./user/xueying/script.tag.gz")================
baseName--------------------->>> "script"
completeBaseName------------->>> "script.tag"
suffix----------------------->>> "gz"
completeSuffix--------------->>> "tag.gz"
bundleName------------------->>> ""
path------------------------->>> "./user/xueying"
filePath--------------------->>> "./user/xueying/script.tag.gz"
fileName--------------------->>> "script.tag.gz"
absolutePath----------------->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
absoluteFilePath------------->>> "E:/project/qt/fileinfoTest/bin/user/xueying/script.tag.gz"
canonicalPath---------------->>> "."
canonicalFilePath------------>>> ""
absoluteDir().dirName-------->>> "xueying"
absoluteDir().absolutePath--->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
absoluteDir().path----------->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
absoluteDir().canonicalPath-->>> ""
dir().dirName---------------->>> "xueying"
dir().absolutePath----------->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
dir().path------------------->>> "./user/xueying"
dir().canonicalPath---------->>> ""
============================absolute file path============================
================QFileInfo("E:/project/test/script.tag.gz")================
baseName--------------------->>> "script"
completeBaseName------------->>> "script.tag"
suffix----------------------->>> "gz"
completeSuffix--------------->>> "tag.gz"
bundleName------------------->>> ""
path------------------------->>> "E:/project/test"
filePath--------------------->>> "E:/project/test/script.tag.gz"
fileName--------------------->>> "script.tag.gz"
absolutePath----------------->>> "E:/project/test"
absoluteFilePath------------->>> "E:/project/test/script.tag.gz"
canonicalPath---------------->>> "."
canonicalFilePath------------>>> ""
absoluteDir().dirName-------->>> "test"
absoluteDir().absolutePath--->>> "E:/project/test"
absoluteDir().path----------->>> "E:/project/test"
absoluteDir().canonicalPath-->>> "E:/project/test"
dir().dirName---------------->>> "test"
dir().absolutePath----------->>> "E:/project/test"
dir().path------------------->>> "E:/project/test"
dir().canonicalPath---------->>> "E:/project/test"
=====================relative dir path with QDir::sepator()=====================
==========================QFileInfo("./user/xueying/")==========================
baseName--------------------->>> ""
completeBaseName------------->>> ""
suffix----------------------->>> ""
completeSuffix--------------->>> ""
bundleName------------------->>> ""
path------------------------->>> "./user/xueying"
filePath--------------------->>> "./user/xueying/"
fileName--------------------->>> ""
absolutePath----------------->>> "E:/project/qt/fileinfoTest/bin/user"
absoluteFilePath------------->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
canonicalPath---------------->>> "."
canonicalFilePath------------>>> ""
absoluteDir().dirName-------->>> "user"
absoluteDir().absolutePath--->>> "E:/project/qt/fileinfoTest/bin/user"
absoluteDir().path----------->>> "E:/project/qt/fileinfoTest/bin/user"
absoluteDir().canonicalPath-->>> ""
dir().dirName---------------->>> "xueying"
dir().absolutePath----------->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
dir().path------------------->>> "./user/xueying"
dir().canonicalPath---------->>> ""
=====================absolute dir path with QDir::sepator()=====================
==========================QFileInfo("E:/project/test/")=========================
baseName--------------------->>> ""
completeBaseName------------->>> ""
suffix----------------------->>> ""
completeSuffix--------------->>> ""
bundleName------------------->>> ""
path------------------------->>> "E:/project/test"
filePath--------------------->>> "E:/project/test/"
fileName--------------------->>> ""
absolutePath----------------->>> "E:/project/test"
absoluteFilePath------------->>> "E:/project/test/"
canonicalPath---------------->>> "E:/project"
canonicalFilePath------------>>> "E:/project/test"
absoluteDir().dirName-------->>> "test"
absoluteDir().absolutePath--->>> "E:/project/test"
absoluteDir().path----------->>> "E:/project/test"
absoluteDir().canonicalPath-->>> "E:/project/test"
dir().dirName---------------->>> "test"
dir().absolutePath----------->>> "E:/project/test"
dir().path------------------->>> "E:/project/test"
dir().canonicalPath---------->>> "E:/project/test"
======================relative dir path no QDir::sepator()======================
============================QFileInfo("./user/xueying")=========================
baseName--------------------->>> "xueying"
completeBaseName------------->>> "xueying"
suffix----------------------->>> ""
completeSuffix--------------->>> ""
bundleName------------------->>> ""
path------------------------->>> "./user"
filePath--------------------->>> "./user/xueying"
fileName--------------------->>> "xueying"
absolutePath----------------->>> "E:/project/qt/fileinfoTest/bin/user"
absoluteFilePath------------->>> "E:/project/qt/fileinfoTest/bin/user/xueying"
canonicalPath---------------->>> "."
canonicalFilePath------------>>> ""
absoluteDir().dirName-------->>> "user"
absoluteDir().absolutePath--->>> "E:/project/qt/fileinfoTest/bin/user"
absoluteDir().path----------->>> "E:/project/qt/fileinfoTest/bin/user"
absoluteDir().canonicalPath-->>> ""
dir().dirName---------------->>> "user"
dir().absolutePath----------->>> "E:/project/qt/fileinfoTest/bin/user"
dir().path------------------->>> "./user"
dir().canonicalPath---------->>> ""
======================absolute dir path no QDir::sepator()======================
===========================QFileInfo("E:/project/test")=========================
baseName--------------------->>> "test"
completeBaseName------------->>> "test"
suffix----------------------->>> ""
completeSuffix--------------->>> ""
bundleName------------------->>> ""
path------------------------->>> "E:/project"
filePath--------------------->>> "E:/project/test"
fileName--------------------->>> "test"
absolutePath----------------->>> "E:/project"
absoluteFilePath------------->>> "E:/project/test"
canonicalPath---------------->>> "E:/project"
canonicalFilePath------------>>> "E:/project/test"
absoluteDir().dirName-------->>> "project"
absoluteDir().absolutePath--->>> "E:/project"
absoluteDir().path----------->>> "E:/project"
absoluteDir().canonicalPath-->>> "E:/project"
dir().dirName---------------->>> "project"
dir().absolutePath----------->>> "E:/project"
dir().path------------------->>> "E:/project"
dir().canonicalPath---------->>> "E:/project"
原网址: 访问
创建于: 2024-05-22 18:26:25
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论