我正在尝试编写一个程序,以新的扩展名重命名选择目录中特定列表的文件。基本上是将所有.dx90文件替换为.dx80文件。这是我迄今为止编写的代码,但它没有起作用。所有文件都被放置在失败的文件列表中,但我没有收到任何错误信息。
#include <QFileDialog>
#include <QString>
#include <QApplication>
#include <QDir>
#include <QStringList>
#include <QTextStream>
QTextStream cout(stdout);
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QString dirName = QFileDialog::getExistingDirectory(0, "Open Directory", QDir::currentPath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
QDir directory(dirName);
QStringList filters;
filters << "*.dx90";
QStringList files = directory.entryList(filters);
QStringList changedFiles, failedFiles;
foreach(QString filename, files)
{
QFileInfo info(filename);
QString rawFileName = filename.section(".", 0, 0);
QString newName = info.absoluteFilePath().section("/", 0, -2) + "/" + rawFileName + ".dx80";
bool success = directory.rename(info.absoluteFilePath(), newName);
if(success)
{
changedFiles << info.absoluteFilePath();
}
else
{
failedFiles << info.absoluteFilePath();
}
}
return 0;
}
newName
,类似这样的代码QString newName = filename.replace(".dx90", ".dx80");
可能更加简洁。 - Nicholas Smith