2014-04-11 33 views
1

我在C#中很新,我發現一些困難,試圖檢索到我的項目目錄中的jpg文件。如何從使用相對路徑的目錄中獲取文件?

我有以下情況:

我有一個解決方案名爲MySolution,這個解決方案裏面有一些項目,包括一個項目名爲PdfReport。在這個項目裏面有一個文件夾名爲共享並且在這個文件夾裏面有一個header.jpg文件。

現在,如果我想獲得屬於共享目錄中的所有文件的列表(如解釋的是我的項目中的目錄)我可以做這樣的事情:

string[] filePaths = Directory.GetFiles(@"C:\Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\Shared\"); 

這工作正常,但我不想使用絕對路徑,但我寧願使用相對路徑相對於PdfReport項目。

我正在尋找解決方案來做到這一點,但直到現在,我找不到它。你能幫我做到嗎?

回答

1

嘗試通過使用此

Server.MapPath("."); 

在非ASP.NET應用程序的WinForms,但還是控制檯或WPF應用程序,以獲得當前文件夾,你應該使用

AppDomain.CurrentDomain.BaseDirectory 
+0

但這只是如果我在.NET Web應用程序或也標準應用程序? – AndreaNobili

+0

標準應用程序是什麼意思? – csharpwinphonexaml

+0

非網頁應用程序 – AndreaNobili

0

如果你想相對根系,你可以這樣做(假設C:\ Develop \ EarlyWarning是網站根目錄)

string[] filePaths = Directory.GetFiles(Server.MapPath("~/public/Implementazione/Ver2/PdfReport/Shared")); 

或者如果你想要plai n相對,

//assuming you're in the public folder 
string[] filePathes = Directory.GetFiles(Server.MapPath("/Implementazione/Ver2/PdfReport/Shared")); 

根據我的經驗,如果您移動代碼,通常最好使用根相對值。

2

提供的應用程序的可執行文件路徑爲 「C:\開發\ EarlyWarning \ PUBLIC \ Implementazione \版本2」,你可以訪問PdfReport \共享文件夾作爲

string exePath = System.IO.Path.GetDirectoryName(Application.ExecutablePath); 
string sharedPath = Path.Combine(exePath, "PdfReport\\Shared\\"); 
string[] filePaths = Directory.GetFiles(sharedPath); 
0

您可以右擊你的文件頭.jpg,選擇屬性,然後選擇例如選項在屬性「複製到輸出目錄」上始終複製

那麼這樣的方法,屬於項目PdfReport任何類:

public string[] ReadFiles() 
{ 
    return Directory.GetFiles("Shared"); 
} 

將工作做好。

或者,如果你有一個永遠不會在運行時更改的文件和你想擁有的組件內訪問他們,你還可以嵌入:http://support.microsoft.com/kb/319292/en-us

相關問題