在 Qt 中重命名给定文件路径的基本文件名,同时保留目录和扩展名的最佳/最标准方法是什么?
有没有标准的方法可以做到这一点,还是我只使用正则表达式?
假设我有:
/home/user/myfile.png
它将更改为:
/home/user/myfile-modified.png
使用QFileInfo解析出路径的各个方面。
QFileInfo original("/home/user/myfile.png");
QString newPath = original.canonicalPath() + QDir::separator() + original.baseName() + "-modified";
if (!original.completeSuffix().isEmpty())
newPath += "." + original.completeSuffix();
警告:如果您的文件名以“.”结尾,但没有扩展名,则会删除“.”。换句话说,/home/user/myfile.
将重命名为/home/user/myfile-modified
. 否则,这应该有效。
未经测试,但这可能有效:
const char* filePath = "/home/user/myfile.png";
QFileInfo file(filePath);
QDir dir = file.dir();
QString baseName = file.baseName();
QString baseNameModified = ...; // insert here your logic for modifying filename
QFileInfo fileModified(dir, baseNameModified);
QString filePathModified = fileModified.filePath();