使用Qt批量生成文件路径列表到txt文件中

目的:一些项目需要一个txt或者dat文件来指示数量成千上百的文件路径位置,要是手工输入的话会非常麻烦,因此想到了使用软件把文件路径直接写入文件中。

bool MainWindow::rename()    //打开一个文件夹,并选择需要按编号改名的文件
{
    int i=1;
    QStringList list=QFileDialog::getOpenFileNames(this,"select",QDir::currentPath(),"*.jpg");  //打开对话框,选择要改名的文件(多选)
    if(list.count()<1)
        return false;
    QString path=QString(list.at(0));
    QString subpath=path.mid(0,path.lastIndexOf("/")+1);  //由于上面获取到的是文件的路径,因此索引到最后一个斜降号,取出文件夹路径。不然下面直接改名的话会把原来文件夹的文件全部移到项目的Debug或者Release文件夹中。
    foreach(QString str,list)
    {
        QFile file(str);
        if(file.rename(QString("%1%2.jpg").arg(subpath).arg(i))==false)     //我这里是把文件改成按数字递增的文件名,要更改的文件格式是jpg
        {
            return false;
            break;
        }
        file.close();
        i++;
    }
}




void MainWindow::gennerate() //打开一个文件夹,把所有文件的路径写到一个TXT文本文件中
{
     QStringList list=QFileDialog::getOpenFileNames(this,"select",QDir::currentPath(),"*.jpg");
     if(list.count()<1)
         return;
     QString path=QString(list.at(0));
     QString subpath=path.mid(0,path.lastIndexOf("/")+1);
     subpath.replace("/","//");
     QString fileinfo;
     QFile file(QString(subpath+"info.txt"));
     file.open(QIODevice::WriteOnly);
     if(file.isOpen())
     {
      foreach(QString str,list)
      {
          fileinfo=subpath+(str.right(str.length()-str.lastIndexOf("/")-1));   //文件路径信息
          file.write(fileinfo.toLocal8Bit());    //编码自己选
          file.write("\r\n");  //换行
          fileinfo="";
      }
      file.close();
     }
     else
     {
         qDebug()<<"open failed";
     }
}

你可能感兴趣的:(QT5)