简介
QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接等等。并且,通过这个类,可以修改文件的大小和最后修改、读取时间。同时,QFileInfo类也可以用来取到Qt 资源的相关信息。
QFileInfo可以表示绝对路径或相对路径的文件。其中,绝对路径就是以"/"开始的路径(或者在Windows系统上就是以某个盘符开始的路径)。相对路径就是相对于当前工作目录的一个文件或目录。我们在开发中可以使用该类的成员函数isRelative() 来判断一个QFileInfo表示的是一个相对路径还是一个绝对路径,也可以使用makeAbsolute()将一个相对路径转换为一个绝对路径。
用法
QFileInfo::QFileInfo() QFileInfo::QFileInfo(const QString & file) QFileInfo::QFileInfo(const QFile & file) QFileInfo::QFileInfo(const QDir & dir, const QString & file) QFileInfo::QFileInfo(const QFileInfo & fileinfo)
构造函数,创建QFlieInfo对象。
QFileInfo info("1/myTest.c.tar.gz");
bool QFileInfo::exists()
判断指定文件是否存在。
QString filename ="D:/OpenGIS/osg+Obliquephoto/1JC/11JC.s3c";
QFileInfo fileInfo(filename);
qDebug() << fileInfo.exists(); //true
bool QFileInfo::isDir ()
判断是否文件路径。
QFileInfo fi("C:/123");
fi.isDir(); //true
QString QFileInfo::fileName()const
返回文件名以及路径,可能是相对路径也可能是绝对路径,看你的设置。
QFileInfo fi("D:/1.txt");
QString name = fi.fileName(); //"D:/1.txt"
QString QFileInfo::canonicalFilePath()const
返回包含文件名的标准路径,即没有符号链接或冗余的“.”或“…”元素的绝对路径。
如果文件不存在,canonicalFilePath()将返回一个空字符串。
QFileInfo fileinfo("D:/1.txt");
QString info = fileinfo.canonicalPath(); //返回"D:/1.txt"
QString QFileInfo::baseName()const
只获取名称不包含任何后缀。
QFileInfo fileinfo("D:/1.txt");
QString base = fileinfo.baseName(); //返回"1"
QDir QFileInfo::dir()const
返回文件相对工作目录的路径作为QDir对象的参数.
QFileInfo fileinfo("D:/1.txt");
QDir dir = fileinfo.dir();
QDateTime QFileInfo::lastModified()const
返回文件最后一次修改的日期和时间.
QFileInfo fileinfo("D:/aa/1.txt");
QDateTime fileinfoLastModified = fileinfo.lastModified(); //"周五 3月 12 17:53:22 2021"
QDir QFileInfo::absoluteDir()const
以QDir对象的形式返回文件的绝对路径。
QFileInfo fileinfo("D:/aa/1.txt");
QDir dir = fileinfo.absoluteDir(); //将"D:/aa"传入到QDir构造函数
QString QFileInfo::path()const
1.返回文件的路径。这并不包括文件名。
2.注意,如果给这个QFileInfo对象一个以斜杠结尾的路径,那么文件的名称将被认为是空的,这个函数将返回整个路径。
QFileInfo fileinfo("D:/aa/1.txt");
QString fileinfoPath = fileinfo.path(); //返回"D:/aa"
QFileInfo fileinfo("D:/aa/1.txt/");
QString fileinfoPath = fileinfo.path(); //返回"D:/aa/1.txt"
qint64 QFileInfo::size()const
以字节为单位返回文件大小。如果文件不存在或无法获取,则返回0。
QFileInfo fileinfo("D:/aa/1.txt"); //内容为1111
fileinfo.size(); //返回为4
QString QFileInfo::absolutePath()const
1.返回包含文件名的绝对路径。
2.绝对路径名由完整路径和文件名组成。在Unix上,它总是以根目录’/'开头。在Windows中,它总是以’D:/‘开头,其中D是一个驱动器字母,但没有映射到驱动器字母的网络共享除外,在这种情况下,路径将以’//sharename/'开头。QFileInfo将大写驱动器字母。
QFileInfo fileinfo("D:/aa/1.txt");
QString fi = fileinfo.absolutePath(); //返回"D:/aa/1.txt"
bool QFileInfo::isFile()const
1.如果该对象指向文件或指向指向文件的符号链接,则返回true。
2.如果对象指向的不是文件,例如目录,则返回false。
QFileInfo fileinfo("D:/aa/1.txt");
fileinfo.isFile(); //true
QFileInfo fileinfo("D:/aa");
fileinfo.isFile(); //false
bool QFileInfo::isSymLink()const
1.如果该对象指向一个符号链接(或指向Windows上的快捷方式),则返回true,否则返回false。
2.在Unix(包括Mac OS X)上,打开一个符号链接可以有效地打开该链接的目标。在Windows上,它会打开.lnk文件本身。
QFileInfo info(fileName);
if (info.isSymLink())
fileName = info.symLinkTarget();