2013-03-09 46 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

相關問題