如果我在 Mac 上使用 ofstream 写入文件,我的文件存储在哪里?
Where is my file stored if I write a file using ofstream on Mac?
我正在使用 Mac 和 Xcode 作为我的以下代码,它们应该为 name
和 age
获取我的 cin
值并写入它们在文件 fileProcessingTrial.txt
.
中
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
// insert code here...
string name;
int age;
ofstream fileProcessing("fileProcessingTrial.txt", ios::out);
cout<<"Please enter your name: "<<endl;
cin>>name;
cout<<"Please enter your age: "<<endl;
cin>>age;
fileProcessing<<name<<" "<<age<<endl;
return 0;
}
然后我的文件fileProcessingTrial.txt
存储在哪里(默认情况下?)如果我想打开它?我可以将它存储在特定位置吗?
如果您不指定路径(绝对或相对),则文件将在您创建文件时在应用程序的 current working directory
(又名 CWD
)中创建。
一个程序可以用 chdir()
改变它的 CWD 并用 getcwd()
获得它的当前 CWD。
如果程序是守护进程,通常会在启动时更改到某个众所周知的目录并在那里完成所有工作。
某些应用程序确定其可执行文件的位置(例如,通过读取 Linux 上的 /proc/self/exe
)然后将文件写入相对于该目录的目录也很常见。
其他常用的选项是;写入用户主目录或命令行或配置文件中指定的目录。
当您 运行 来自 shell 的程序时,CWD 最初将是用户启动应用程序时所在的目录。
当 运行从 IDE 连接时,CWD 通常由 IDE 设置到其配置中指定的某个位置。
在任何情况下,避免在程序中硬编码绝对文件路径,因为您永远无法确定路径存在于所有用户机器上(当然存在例外),也无法确定用户 想要 文件写在那里。最好以某种方式询问用户并将文件写入该位置。
我想我会添加一个特定于 Xcode 的答案。如果您正在构建 运行 Xcode 中的可执行文件(IDE),那么输出文件(如果您没有指定文件名的绝对路径)将转到同一目录作为 Build Products 因为那是构建的可执行文件所在的位置。这成为 Jesper Juhl 在 Xcode 运行可执行文件时提到的 current working directory
。要找到它,请单击 Project Navigator 中的 product(在下面的屏幕截图中,这是左侧窗格中的 File Out
可执行文件).然后查看右上窗格中的文件检查器。 完整路径 的目录部分是您的输出文件所在的位置。
如果您确实指定了相对路径,那么构建产品的位置将相对于此目录,正如 Jesper 所说,您应该避免在程序中编码绝对路径。
在Xcode中,您还可以通过编辑方案更改current working directory
:
- 转到方案编辑器中运行下的选项选项卡。
- 单击使用自定义工作目录复选框
- Select或进入工作目录(绝对路径)
希望这对您有所帮助。
我正在使用 Mac 和 Xcode 作为我的以下代码,它们应该为 name
和 age
获取我的 cin
值并写入它们在文件 fileProcessingTrial.txt
.
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
// insert code here...
string name;
int age;
ofstream fileProcessing("fileProcessingTrial.txt", ios::out);
cout<<"Please enter your name: "<<endl;
cin>>name;
cout<<"Please enter your age: "<<endl;
cin>>age;
fileProcessing<<name<<" "<<age<<endl;
return 0;
}
然后我的文件fileProcessingTrial.txt
存储在哪里(默认情况下?)如果我想打开它?我可以将它存储在特定位置吗?
如果您不指定路径(绝对或相对),则文件将在您创建文件时在应用程序的 current working directory
(又名 CWD
)中创建。
一个程序可以用 chdir()
改变它的 CWD 并用 getcwd()
获得它的当前 CWD。
如果程序是守护进程,通常会在启动时更改到某个众所周知的目录并在那里完成所有工作。
某些应用程序确定其可执行文件的位置(例如,通过读取 Linux 上的 /proc/self/exe
)然后将文件写入相对于该目录的目录也很常见。
其他常用的选项是;写入用户主目录或命令行或配置文件中指定的目录。
当您 运行 来自 shell 的程序时,CWD 最初将是用户启动应用程序时所在的目录。
当 运行从 IDE 连接时,CWD 通常由 IDE 设置到其配置中指定的某个位置。
在任何情况下,避免在程序中硬编码绝对文件路径,因为您永远无法确定路径存在于所有用户机器上(当然存在例外),也无法确定用户 想要 文件写在那里。最好以某种方式询问用户并将文件写入该位置。
我想我会添加一个特定于 Xcode 的答案。如果您正在构建 运行 Xcode 中的可执行文件(IDE),那么输出文件(如果您没有指定文件名的绝对路径)将转到同一目录作为 Build Products 因为那是构建的可执行文件所在的位置。这成为 Jesper Juhl 在 Xcode 运行可执行文件时提到的 current working directory
。要找到它,请单击 Project Navigator 中的 product(在下面的屏幕截图中,这是左侧窗格中的 File Out
可执行文件).然后查看右上窗格中的文件检查器。 完整路径 的目录部分是您的输出文件所在的位置。
如果您确实指定了相对路径,那么构建产品的位置将相对于此目录,正如 Jesper 所说,您应该避免在程序中编码绝对路径。
在Xcode中,您还可以通过编辑方案更改current working directory
:
- 转到方案编辑器中运行下的选项选项卡。
- 单击使用自定义工作目录复选框
- Select或进入工作目录(绝对路径)
希望这对您有所帮助。