目的:一些项目需要一个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";
}
}