每日一篇(1):判断文件夹中是否有同名文件并处理重名问题

isSameFile判断是否有重名文件,QString fullfilepath需要使用全路径。

bool isSameFile(QString fullfilepath)

{
std::fstream myfile;
char* ch; 
QByteArray ba = fullfilepath. toLocal8Bit(); 
ch=ba.data();
myfile.open(ch, std::ios::in);
if (myfile)
return true;
else
return false;
}

以pdf文件为例,解析出文件名,并进行重组,以(1)(2)(3)为标识累加。
void dealSameFileName(QString& filename)
{
if (isSameFile(filename))
{
QStringList namelist = filename.split(".pdf");
QString singlefilename = namelist[namelist.size() - 2];
int i = 1;
QString extractfilename = singlefilename +  QString(tr("(")) + QString::number(i, 10) +  QString(tr(")")) + QString(tr(".pdf"));
while (isSameFile(extractfilename))
{
i++;
extractfilename = singlefilename +  QString(tr("(")) + QString::number(i, 10) +  QString(tr(")")) + QString(tr(".pdf"));
}
filename = extractfilename;
}
}

你可能感兴趣的:(Qt)