2013-04-09 66 views
1

應用程序在搜索文件時的外觀?它在哪裏創建?總是指定絕對路徑是很現實的。例如。我嘗試保存將在項目解決方案的本地bin中的Visual Studio 2010應用程序中使用的文本文件,但始終出現運行時錯誤。Windows應用程序中使用的文件的工作目錄

回答

0

它通常是它被調用的文件夾。您可以使用以下方式找到它:_getcwdhttp://msdn.microsoft.com/en-us/library/sf98bd4y%28VS.80%29.aspx

+0

請定義「它被調用的文件夾」的含義。 – 2013-04-09 18:28:58

+0

歷史上,您調用該程序時所處的目錄,即'%CD%'。現在,我相信這取決於程序的啓動方式。例如,如果它使用鏈接啓動,它通常是程序(.exe)所在的文件夾。但是,它可以在鏈接的屬性中更改。雖然我不確定VC的默認設置是什麼。 – mrks 2013-04-09 18:31:26

+0

什麼時候該進程改變工作目錄? – 2013-04-09 18:32:55

0

如果使用相對路徑,則將您提供的路徑與進程的工作目錄結合在一起。

保持對GUI進程的工作目錄的控制是非常困難的。這是因爲GUI過程往往以很多不同的方式開始。更重要的是,文件對話有改變工作目錄的趨勢。最後,工作目錄在進程中的所有線程之間共享,並且可以由任何線程更改。有很多陷阱。

所以在一個GUI過程中,我建議你不要使用相對路徑。或者,如果您使用相對路徑,則在使用它們之前將它們轉換爲絕對路徑。並根據明確定義的根路徑執行轉換。

除非您正在編寫便攜式應用程序,否則您不應該期望能夠保存到包含可執行文件的目錄。在現代系統上,可執行文件通常位於只讀目錄中。

如果要保存用戶設置,請將它們保存在用戶配置文件中的適當位置。另一方面,如果您要讀取文件,而您從不修改,那麼將它們與可執行文件一起存儲是合理的。但即使在這種情況下,使用完整的絕對路徑打開文件。通過將包含可執行文件的目錄與文件的相對路徑相結合來創建該路徑。

因此,要總結,對你說:

這是很少的現實始終指定絕對路徑。

但我不同意。我會反駁說,使用絕對路徑往往是最好的選擇。但是你不必硬編碼絕對路徑。您可以並應該在運行時創建它。

相關問題