我目前正在为 MacO 和 Windows 开发 Qt 应用程序。在这个应用程序中,我需要写入和读取一个文件。虽然已部署的应用程序在 Windows 和 Linux 上运行良好,但在 Mac 上却不行。目前有 3 种不同的“结果”。 (仅限 Mac)
- 当我使用 Qt Creator 运行应用程序时,文件会在同一个文件中创建和加载 可执行文件所在的位置(在 .app/Contents/MacOS/)。
- 当我执行部署文件夹中的 .app 文件时,open() 失败
- 当我执行 exec(在 .app/Contents/MacOS/)时,文件被创建并加载到我的主目录中
没有错误消息或任何东西,它只是在情况 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 时观察到相同的行为
最佳答案
当你说你必须写或读一个文件时,为什么不在一些有意义的地方创建这个文件,例如在 Documents\YourAppName 目录中?
而不是依赖于操作系统和 Qt 实现提供具有已知行为的有效路径。
您可以使用QStandardPaths
Qt 类来查找我的文档目录。
所以你的目录可以是 QStandardPaths::DocumentsLocation
QDir pathToWrite( QStandardPaths::displayName(QStandardPaths::DocumentsLocation) + "YourAppName" );
这将始终为您提供定义的行为。
关于c++ - 在 mac 上执行 .app 时,fstream 和 qfile 不创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48167284/