本文主要用Qt5.9代码总结获取指定文件所在的文件夹路径和文件名称,比如获取指定文件E:/test.txt,具体内容如下所述。
一、核心函数讲解
主要用到的核心函数如下:
const int QString::lastIndexOf(const QString &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive);
函数int QString::lastIndexOf(QString &s)的功能是在QString中,从最后一个字符开始往前搜索,搜索第一个跟字符串s相同的内容,并且将这个内容在QString中的位置返回。
与之相反的是另一个搜索函数int QString::IndexOf(QString &s)。该函数的功能是从第一个字符开始往后搜索,搜索第一个跟字符串s相同的内容,并且将这个内容在QString中的位置返回。
比如下面代码:
QString str="E:/test.txt";
int index=str.lastIndexOf("/"); //index==2
二、主要代码如下:
/*打开一个dialog对话框,选择一个文件*/
QString str = QFileDialog::getOpenFileName();
if(str.isEmpty())
{
return;
}
QFile file(str);
qDebug()<<"str=="<<str;
if(!file.open(QFile::ReadOnly))
{
return;
}
QCryptographicHash hash(QCryptographicHash::Md5);
if(!file.atEnd())
{
hash.addData(file.readAll());
}
QString md5;
md5.append(hash.result().toHex());
qDebug()<<md5;
/*根据选中文件的路径,获取所在文件夹路径和文件名称,且在文件名后面加入一串字符_MD5*/
QString pathStr=str.left(str.lastIndexOf("/")); //str=="E:/test.txt" pathStr=="E:/"
QString nameTxt=str.right(str.length()-str.lastIndexOf("/"));
QString nameMD5Txt=nameTxt.left(nameTxt.lastIndexOf("."))+"_MD5.txt"; //nameMD5Txt=="test_MD5.txt"
QString dir=pathStr+nameMD5Txt; //dir== "E:/test_MD5.txt"
qDebug()<<"dir=="<<dir;
参考内容:
https://www.cnblogs.com/superit/p/3837635.html(参考:lastIndexOf()和IndexOf())
https://www.cnblogs.com/hhxxgdd/p/8524586.html(参考:lastIndexOf())