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

sas*_*alm 5 c++ qt filepath

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

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

比方说我有:

/home/user/myfile.png
Run Code Online (Sandbox Code Playgroud)

它将改为:

/home/user/myfile-modified.png
Run Code Online (Sandbox Code Playgroud)

Tom*_*ing 6

使用QFileInfo解析路径的各个方面.

QFileInfo original("/home/user/myfile.png");
QString newPath = original.canonicalPath() + QDir::separator() + original.baseName() + "-modified";
if (!original.completeSuffix().isEmpty())
    newPath += "." + original.completeSuffix();
Run Code Online (Sandbox Code Playgroud)

警告:如果您的文件名以"."结尾,但没有扩展名,则会删除".".换句话说,/home/user/myfile.将重命名为/home/user/myfile-modified.否则,这应该工作.

  • @Phlucious那不是真的.这里`QFile :: rename()`最终调用`rename()`,它实际上可以重命名_and_ move文件.例如`QFile :: rename("myFile","../myFile")`将_myFile_移动到父目录. (3认同)