【问题标题】:why are [ fopen() / open() / fstream file ] failing on Mac OS X for opening a file?为什么 [ fopen() / open() / fstream file ] 在 Mac OS X 上打开文件失败?
【发布时间】:2014-02-19 13:35:54
【问题描述】:

我试图在 Mac OS X 上打开一个 tga 文件,我花了过去一个小时来处理这个问题,但没有运气。 我只是想打开一个 tga 文件。 这是我迄今为止尝试过的,

    int filedesc = open("/Users/x2am/Desktop/1177.tga", O_RDONLY);
    if(filedesc < 0)
            printf("%s ",strerror(errno));

输出>不允许操作

    FILE* fp = fopen("/Users/x2am/Desktop/1177.tga", "rb");
    if(fp == NULL) printf("file not loaded");

输出>文件未加载

   filename = L"/Users/x2am/Desktop/1177.tga";
   std::string narrow(filename.begin(), filename.end());
   fstream file(narrow.c_str(), ios::in | ios::binary);
   if (!file.good()) printf("file not loaded");

输出>文件未加载

考虑到 open() 的输出,不知何故不允许该操作。

这是我在图像上执行的获取信息。

应用已被沙盒化,

现在我想我已经尽力了。有什么看不见的东西出现在我面前吗?非常感谢任何帮助:)

【问题讨论】:

  • 应用程序是否被沙盒化?
  • 是的。它是沙盒的。我将使用构建设置中沙盒页面中的文件访问列表更新问题。
  • IIRC,沙盒应用程序只能访问用户通过文件对话框明确允许的文件。
  • 可以把文件放到容器目录下,也可以用finder打开一次,保存访问权限。在这里阅读:developer.apple.com/library/mac/documentation/Security/…
  • @molbdnilo,我试图打开的 tga 文件是在运行时从 ftp 服务器下载的。那么,除了禁用沙盒之外,我还能打开文件吗?

标签: c++ c macos file


【解决方案1】:

问题确实是因为苹果沙盒。 这又提出了一个问题,苹果沙盒:朋友还是敌人? 将文件放入 /Users/USER/Library/Container/com.xxx.xxx/Data/ 后,它起作用了。 非常感谢@SHR 的回答:)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2013-11-28
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多