当.app在mac

时间:2018-01-09 11:33:03

标签: c++ macos qt qt-creator fstream

我目前正在为MacOs和Windows开发Qt应用程序。在这个应用程序中,我需要编写和读取文件。虽然部署的应用程序在Windows和Linux上运行得非常好,但在Mac上却没有。目前有3种不同的结果"。 (仅限Mac)

  1. 当我使用Qt Creator运行应用程序时,文件会被创建并加载到同一个文件中 可执行文件所在的位置(在.app / Contents / MacOS /)。
  2. 当我在部署文件夹中执行.app文件时,open()失败
  3. 当我执行exec(在.app / Contents / MacOS /)时,文件被创建并加载到我的主目录中
  4. 没有错误消息或任何内容,它只是在案例2中没有做任何事情。 我在Mac上使用Qt-Creator 4.5和Qt 5.10.0在MacOS High Sierra 10.13.2上进行测试

    我包括fstream 出口:

    std::ofstream csvExport;
    csvExport.open("save.csv", std::ofstream::out);
    

    导入

    std::ifstream csvImport;
    csvImport.open("save.csv", std::ifstream::in);
    

    使用QFile

    时,我发现了相同的行为

1 个答案:

答案 0 :(得分:1)

当您说您必须写或读文件时,为什么不在某个有意义的地方创建此文件,例如在Documents \ YourAppName目录中?

不依赖于OS和Qt实现,而是提供具有已知行为的有效路径。

您可以使用QStandardPaths Qt类查找我的文档目录。 所以你的目录可以是QStandardPaths::DocumentsLocation

QDir pathToWrite( QStandardPaths::displayName(QStandardPaths::DocumentsLocation) + "YourAppName" );

这将始终为您提供定义的行为。