C++ 无法在所需目录中创建临时文件

C++ 无法在所需目录中创建临时文件,c++,macos,file-permissions,C++,Macos,File Permissions,我需要在MAC上的指定文件夹中创建一个临时文件。但是,我能够在正确的位置创建文件夹,但无法在其中创建文件。我收到一个错误,说它没有创建文件的权限,尽管我在创建文件夹时已通过777 as file权限。请在下面找到我的代码。我想说的是,这个问题只存在于MAC上。在windows上,它按预期执行。请让我知道问题是什么 wxString curDir = SeeWorkingDir() + wxT("Temp\\"); //Gets the working directory if(

我需要在MAC上的指定文件夹中创建一个临时文件。但是,我能够在正确的位置创建文件夹,但无法在其中创建文件。我收到一个错误,说它没有创建文件的权限,尽管我在创建文件夹时已通过777 as file权限。请在下面找到我的代码。我想说的是,这个问题只存在于MAC上。在windows上,它按预期执行。请让我知道问题是什么

    wxString curDir = SeeWorkingDir() + wxT("Temp\\"); //Gets the working directory

    if(!wxFileName::DirExists(curDir)) //Checks if directory exists
    wxFileName::Mkdir( curDir, 0777, wxPATH_MKDIR_FULL ); // creates the directory

    wxString jobcopy = wxFileName::CreateTempFileName(curDir); // should create temp file

我完全不知道您的“
SeeWorkingDir()
”函数返回的是什么,但是如果它返回的是应用程序目录,那么您不应该在其中写入任何内容


为什么不将“
SeeWorkingDir()
”替换为指向Macintosh上某个真正可写的地方的路径,比如“
/tmp/
”目录?

您没有解释函数SeeWorkingDir()的功能

也许您应该使用
wxFileName::GetTempDir
来指定存储文件的目录。这应该是独立于平台的

或者,在调用wxFileName::CreateTempFileName(curDir)时,可以指定
fileTemp
参数直接打开文件

请参阅文档:

curDir-after-first语句将是/users/../../../Temp/必须创建文件的位置,如果是MAC,它将是SeeWorkingDir()+wxT(“Temp/”)。您实际创建了文件夹还是已经创建了?你检查过文件夹的实际权限了吗?@paill我自己创建了这个目录。。在创建时,我已经通过了参数777(完全允许)。谢谢Michael。请参阅工作目录将返回MAC的临时区域。。这类似于“users/darzen/library/cache/project/,然后我在其中创建了一个名为Temp的目录,其中“
/users/michael/library/cache/
”在我的计算机上不存在。是什么让你认为它会存在于你用户的计算机上?如果你正在编写Temp文件,请将它们写入预期写入的位置。”“代码> /TMP ”是C/C++代码的一个方便的地方。“是目标C/native code.users/Darzen/Library/Caches/project的正确位置/很抱歉,我错过了中的's'。”caches@Michael:问题不是它在您的机器中不工作,而是它在Darzens机器中不工作。是什么让你认为SeeWorkingDir会返回一个固定的路径名?@ PauliL——因为Darzen正试图让C++工作,我建议他写进“/tMP”文件夹,而不是与一些非固定路径进行战斗,其中一个组件可能是不可写的或不存在的目录。(这将导致他现在遇到的问题)。