2012-09-11 210 views
4

嗨,我想知道你們是否可以幫忙請。使用Directory.Getfiles指定絕對路徑

我正在編寫一個應用程序,這個應用程序即將在多個服務器上運行,因此存在多個IP,而不是使用確切的IP和目錄結構我只想從應用程序的實際位置「退後」運行。因此,例如....

的文件夾結構是

\控制\ ----這包含了將要檢查一個XML文件中的文件夾blogengine存在aspx文件。

\ blogengine \本應包含的XML文件

我正在使用的代碼是......

string[] filePaths = Directory.GetFiles(@"\\94.175.237.35\inetpub$\wwwroot\mytest\BlogEngine\", "*.xml"); 

這將找到一個特定的服務器上的文件,但我需要找到與運行應用程序的服務器相關的文件,這樣我就不必更改文件路徑。所以我需要像

string[] filePaths = Directory.GetFiles(@"..\BlogEngine\", "*.xml"); 

但爲了做到這一點,我不能找到正確的語法?

有誰知道?

由於提前, 克雷格

回答

1

在ASP.Net應用程序,你可以調用Server.MapPath("~/path")解決在相對於應用程序根目錄下的磁盤的路徑。

6

使用Server.MapPath()方法將相對路徑(基於當前目錄或網站根目錄)映射到絕對可訪問路徑。

例如:

string folderPath = Server.MapPath("~/BlogEngine"); 
string[] filePaths = Directory.GetFiles(folderPath, "*.xml"); 

波浪符號代表你的網站的根目錄,如果指定相對路徑,然後它會被解析爲相對於目錄,你的ASP.NET頁面所在。

+0

絕對一流!謝謝,那讓我失望了! – SxChoc

1

使用Path.GetFullPath從相對路徑中獲取絕對路徑。

所以,你的代碼就變成了:

string[] filePaths = Directory.GetFiles(Path.GetFullPath(@"..\BlogEngine\"), "*.xml");