将错误命名的文件(未指定路径时重命名)移动到哪里?

时间:2014-09-18 14:30:10

标签: c++ macos unix

我不小心犯了一个大错:

在我的C ++程序中,我做了:

std::string oldFilePath = "/Users/blah/somepath/foo.xml";
std::string newFileName = "foo.xml" //Blunder! Forgot to prefix the new path!
int status = rename(oldFilePath.c_str(), newFileName.c_str());

我忘了为新路径添加前缀,只是将文件名(没有路径)放入文件应重命名的新名称。结果文件已经从旧的路径消失了,我不知道它去了哪里!

文件在哪里?有办法恢复吗? (此文件夹禁用Time Machine,因此我无法执行此操作!)

编辑:Xcode为C ++应用程序生成的编译文件在哪里?

编辑:如果您通过xcode运行该程序,它应该在:

  

〜/库/开发商/ Xcode中/ DerivedData //建立/产品/调试/

不要忘记上述路径中的〜!

1 个答案:

答案 0 :(得分:0)

如果操作成功(status == 0),则文件在运行时将位于进程的当前目录中。很难预测可能的位置,但$HOME是一个合理的候选人(也许是/Users/blah/foo.xml)。您应该能够使用find命令或使用Spotlight找到它。

我没有使用XCode UI(或其他IDE),部分原因是因为我不喜欢对诸如“程序放置”之类的事情缺乏控制权。以及'当我运行程序时,当前目录是什么? (其余因为我是一只恐龙)。 AFAIK,可执行文件应位于您创建项目的文件夹下的目录中。同样,Spotlight或find应该能够帮助您,至少如果您为该计划选择了一个独特的名称。项目目录也是另一个查找foo.xml文件的地方。