2013-03-09 48 views
2

我的可可命令行程序的目标是获取一个参数,它是一个文件的名称并将其导入到程序中进行解析。我希望能够调用我的程序让我们可以从终端在mac os中使用参数“Filename.txt”(例如$ ParseFile filename.txt)来说,“ParseFile”,但到目前为止,我无法理解我的程序如何知道Filename.txt的绝对路径。如何让我的Cocoa命令行工具知道它在终端中被调用的工作路径?

例如,当您使用“CP FILENAME.TXT /whateverfolder/filename2.txt”您要复制从终端的当前工作目录文件“FILENAME.TXT”的根目录中称为whateverfolder文件夹。 cp如何知道filename.txt的绝对路径?如果我有我的桌面上的文件名.txt CP将知道我发送它/用户/用户名/桌面/文件名.txt。这是我想要我的程序知道的。

我已经能够让我的程序知道它在哪里执行,但这与当前bash终端的工作目录在被调用时截然不同。

我该如何解决这个问题?非常感谢

+1

什么是“Cocoa命令行工具”? – 2013-03-09 07:32:27

+0

一个客观的c可执行文件,基于没有任何gui的基础框架 – rabbitfeetz 2013-03-10 03:42:19

回答

4

使用NSFileManagercurrentDirectoryPath方法:

NSString *currentpath = [[NSFileManager defaultManager] currentDirectoryPath]; 
+0

谢谢你正是我所需要的,我没有意识到NSFileManager有这个非常感谢! – rabbitfeetz 2013-03-10 05:44:11

2

如何CP知道FILENAME.TXT的绝对路径?

它不知道它,也不必。它可以使用相对路径。当前工作目录是从父进程继承的。

我已经能够让我的程序知道它在哪里执行,但这与当前bash终端的工作目录在被调用时截然不同。

你是什么意思?可执行文件所在的目录?这通常不是很有趣。在此上下文中唯一起作用的其他目录是当前工作目录。如果你已经有了,你还需要什么?

+1

为了扩展'cp',不必知道:它是解析实际磁盘文件路径的内核,内核知道进程的工作目录,因此可以解析相对路径。也就是说,nneonneo的答案在为你的程序学习工作目录提供一种方法也是正确的,但它通常不需要。 – 2013-03-09 08:22:25

+0

谢谢!更多角色... – rabbitfeetz 2013-03-10 05:45:45

相关问题