如何在Qt中派生新的基本文件名?

时间:2012-11-14 14:29:16

标签: c++ qt filepath

在保留目录和扩展名的同时,在Qt中仅重命名给定文件路径的基本文件名的最佳/最标准方法是什么?

有没有标准的方法,或者我只使用正则表达式?

让我说我有:

/home/user/myfile.png

它将改为:

/home/user/myfile-modified.png

2 个答案:

答案 0 :(得分:6)

使用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。否则,这应该有用。

答案 1 :(得分:1)

未经测试,但这可能有效:

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();