QT遍历批量修改文件名称(C++)2020-06-29 17:28:28

( 还没有投票,继续加油! )
分享:
31.3K

QT遍历批量修改文件名称(C++)

包含文件的话:<QDir>


//修改所有图片名称,所有图片文件重命名,按顺序images_999.jpg
void AlterImageNames(){
QString m_sProjectPath = QObject::tr("D:\\Work\\QProject\\build-pigDetection-Desktop_Qt_5_14_2_MinGW_64_bit-Debug\\Image");/*路径*/
QDir dir(m_sProjectPath);
dir.exists(); /*判断文件夹是否存在?*/
dir.setFilter(QDir::Files); /*设置dir的过滤模式,表示只遍历本文件夹内的文件*/
QFileInfoList fileList = dir.entryInfoList(); /*获取本文件夹内所有文件的信息*/
int fileCount = fileList.count(); /*获取本文件夹内的文件个数*/
QString oldName = "";
QString newName = "";
QString mainPath = "";
for(int i=0,j=1;i<fileCount;i++) /*遍历*/
{
  QFileInfo fileInfo = fileList[i]; /*获取每个文件信息*/
  QString suffix = fileInfo.suffix(); /*后缀*/
  mainPath = fileInfo.path();
  oldName = mainPath+"/"+fileInfo.fileName();
  newName = QString("%1/images_%2.jpg").arg(mainPath).arg(j);
  if(QString::compare(suffix, QString(QObject::tr("jpg")), Qt::CaseInsensitive) == 0) {
    //QString filePath = fileInfo.absoluteFilePath();/*文件绝对路径*/
    QFile::rename(oldName,newName);
    j++;
  }
}
}


用相对路径好像也是可以的呢,不过改名的QFile::rename这个特殊,需要的是长的绝对路径。

在修改之前可以测一下输出的oldName及newName的值,比如将rename注释,换成两句

//QFile::rename(oldName,newName);//注释掉
qDebug()<<"New Name:"<<newName<<endl;
qDebug()<<"Old Name:"<<oldName<<endl;
if(j>3) break;//测试前三个文件名称对不对
j++;


代码实测有效,祝你成功!






头像

snowcoal
  • QT
  • C++
  • 遍历文件夹
  • 修改文件名称
  • rename

收藏到我的私密空间

标题:QT遍历批量修改文件名称(C++)

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限