我是Qt的新手,正在学习如何使用QDir和QFile库重命名文件。
我知道如何重命名并且可以做到,但是当我尝试在此循环中时,它不起作用。
QDir editFile;
std::cout << "Attempting to chop and put .mp4 onto a regular file.n";
QString fileNameBuf{argv};
QString fileOriginal{argv};
for(int l{0}; l < fileNameBuf.size(); ++l)
{
if(fileNameBuf.at(l) == '.')
{
fileNameBuf.chop(fileNameBuf.size() - l);
break;
}
}
fileNameBuf.append(".mp4");
if(editFile.rename(argv, fileNameBuf))
std::cout << "Successfuln";
else
std::cout << "did not make it.n";
这实际上是在发送一个名为argv的QString的函数中。 argv是一个文件路径。 我让它附加.mp4并删除旧扩展名。我听说并知道,如果你做错误的Q重命名,它将不起作用。请帮助我使用此代码。我看过其他关于此的帖子,但它们似乎没有帮助。
我希望你知道文件不是那样工作的......仅更改文件的扩展名并不意味着它会导致新的有效文件类型。
话虽如此。无需重新发明轮子:
查看官方文档:
https://doc.qt.io/qt-5/qfile.html#rename-1
QFile editFile{"foo.txt"};
std::cout << "Attempting to chop and put .mp4 onto a regular file.n";
if(editFile.rename("foo.mp4"))
std::cout << "Successfuln";
else
std::cout << "did not make it.n";
如果Qt有indexOf((在字符串中查找字符,为什么要使用for ((来完成此任务?
为什么不使用替换((来更改文件扩展名?
QString::replace 很容易完成此任务,因为如果字符串不包含源字符串,它将不执行任何操作...
如前所述,使用 Qt 的函数。如果遇到此问题,请确保在重命名文件之前未打开该文件。这就是我在这里做错的,除非您关闭它或文件超出范围,否则您将无法重命名它。 感谢所有回复的人的见解。