Xcode应用不再从该文件夹中读取输入

Xcode App No Longer Reads Input From the Folder The App is Stored In

本文关键字:读取 输入 文件夹 应用 不再 Xcode      更新时间:2023-10-16

标题有点漫长,但基本上,我编写了一个读取并将其输入和输出写入文本文件的应用程序。在整个时间内,它将与我的XCode派生数据 -> Project-> build-> build-> products->调试文件夹直接读取文件。这是所有内容都在写和阅读的地方。我没有为应用程序设置的自定义路径,因此只需在应用程序所在的任何地方保存即可。我第一次运行了Apple's Instruments应用程序,试图学习如何使用剖面。在选择此应用程序作为仪器中的目标之后不久,我返回Xcode应用程序以更多的方式运行该程序。一切都在XCode中正常工作。它从文件和打印到文件夹位置的文件中读取与文件夹相同的文件,但是如果我尝试通过单击文件并让其打开终端来运行实际程序本身,则它将不再读取或打印到该应用程序为目录的目录取而代之的是,它的印刷和阅读我的主文件夹。我不知道发生了什么变化或导致它发生了什么变化,但我希望这是一个简单的修复程序。我想让应用程序从文件中读取并从目录中打印文件再次位于此处。我不确定它是XCode设置还是终端设置。

任何帮助将不胜感激。

更新1:不运气尝试:

如何将工作目录更改为程序的位置

目录字段是空白的,所以我认为这是解决方案,但是将其填写为没有减轻问题的建议。

更新2:

刚刚尝试删除优先文件,但仍然没有解决方案。我愿意给某人声誉。我没有很多东西,因为我是一个较新会员,但是我会把这个人认为是公平的,任何人解决的人。我很拼命,真的不想等2天解决这个问题。

更新3:

尝试更改计划部分中" profile(repares) ->"选项"区域中的默认路径为更新1中建议的默认变量。没有运气。我开始失去理智。

更新4:

我已经尝试完全删除该计划并制定新计划,希望该计划可能会有一些事情,但这并不能解决问题。在XCode中运行应用程序时的输入和输出仍在使用工作目录,在调试文件夹中运行可执行文件时,正在使用Home Folder。

更新5:

刚刚在旧的iMac和Xcode设置(OS 10.8.5和Xcode 5.1.1)上进行了测试,并且似乎正常工作,在调试文件夹中读取和写入应用程序的当前工作目录。

无论出于何种原因,https://stackoverflow.com/a/155537436/1035008建议的解决方案不再可行。也许在Xcode 8.1中损坏。但这似乎有效:

#include <iostream>
#include <fstream>
#include <unistd.h>
using namespace std;
int main (int argc, const char * argv[])
{
    // argv[0] returns the full path to the program, in my case "/Users/yuchen/Library/Developer/Xcode/DerivedData/../Debug/test
    string directory(argv[0]);
    // And we want to get rid of the program name `test`
    directory = directory.substr(0, directory.find_last_of("/"));
    // Point the directory to the program directory
    chdir(directory.c_str());
    cout << "Current directory is: " << getcwd(NULL, 0) << endl; // /Users/yuchen/Library/Developer/Xcode/DerivedData/../Debug/
    ifstream fin("hi.txt");
    if (fin.is_open()) cout << "File is Open" << endl;
    else cout << "File is not open" << endl;
    fin.close();
    return 0;
}

也看到这样。希望这可以帮助。