C++ C++;写入文件不起作用?
我目前正在开发一款iPhone游戏,它通过TCP向服务器程序发送声音文件。TCP传输工作得很好(我已经设置了缓冲区来检查它是否与声音文件匹配,确实如此)。问题是。。。我想将声音文件写入服务器上自己的文件夹中。每个游戏都有其唯一的gameID,gameID应该是服务器上文件夹的名称 我的“写入文件”功能当前如下所示:C++ C++;写入文件不起作用?,c++,macos,file,io,ofstream,C++,Macos,File,Io,Ofstream,我目前正在开发一款iPhone游戏,它通过TCP向服务器程序发送声音文件。TCP传输工作得很好(我已经设置了缓冲区来检查它是否与声音文件匹配,确实如此)。问题是。。。我想将声音文件写入服务器上自己的文件夹中。每个游戏都有其唯一的gameID,gameID应该是服务器上文件夹的名称 我的“写入文件”功能当前如下所示: void PacketInterpreter::makeFile(int gameID, std::string buffer){ std::string gameIDdir
void PacketInterpreter::makeFile(int gameID, std::string buffer){
std::string gameIDdir = "mkdir " + std::to_string(gameID);
std::system(gameIDdir.c_str());
std::string constructedPath = std::to_string(gameID);
constructedPath += "/";
std::ofstream thisFile;
thisFile.open(constructedPath+"sound.caf");
thisFile << buffer;
thisFile.close();
std::cout << "File assembled at " << constructedPath << "sound.caf" << std::endl;
}
void packetexplorer::makeFile(int gameID,std::string buffer){
std::string gameIDdir=“mkdir”+std::to_string(gameID);
std::system(gameIDdir.c_str());
std::string constructedPath=std::to_string(gameID);
构造路径+=“/”;
std::流文件;
打开(constructedPath+“sound.caf”);
此文件打开后是否检查了此文件的状态?可能是您需要一些额外的ios::openmode
标志。您在任何时候都没有检查错误。首先,您没有检查std::system
调用的结果以查看函数是否成功。路径中是否有mkdir
?您尝试过吗/usr/bin/mkdir
?您是否搜索了整个文件系统以查看目录是否已创建?您对当前工作目录是否具有写入权限?目录上的权限是什么?您的进程是否具有写入权限?如果您的文件路径有空格,mkdir
可以很高兴地进行不同的直接访问例如,mkdir/path/to/something with spaces/foo
可能会使目录/path/to/something
、with
和spaces/foo
(虽然在本例中,如果没有-p
参数,它可能会在spaces/foo
失败。)实际上,您应该测试目录是否存在,并自己调用mkdir
,而不是调用system()
来为您执行此操作。在任何情况下,您都应该检查是否成功,无论您是通过system()
间接调用mkdir
,还是您自己直接调用它。