2012-08-27 77 views
1

爲什麼我不能使用IO.StreamReader("Resources/file.txt")的相對路徑?IO.StreamReader(文件名)愚蠢

我正在使用一個web應用程序,所以顯然這個文件不會在我的開發機器和服務器之間的絕對位置。

如何修復我的文件名路徑,以便找到該文件?我有一個文件(相對於調用它的頁面)在路徑「Resources/file.txt」,但愚蠢的函數正在根目錄「C:\ Program Files文件(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE「。爲了萬一它很重要,我現在在.NET 3.5上。

謝謝。 :)

回答

2

使用HttpContext.Current.Server.MapPath(文件名),以找到您的文件作爲一個字符串的相對路徑,然後這個傳遞給IO.StreamReader像這樣:

Dim sr As New IO.StreamReader(HttpContext.Current.Server.MapPath(filename)) 
Dim text As String = DirectCast(sr, IO.TextReader).ReadToEnd() 'gives you text 
+0

賓果!!謝謝。 – Chiramisu

2

那是因爲你的工作文件夾不是Web根的地方,它是應用程序的位置。在開發它是Visual Studio應用程序的位置時,在活動服務器上它將是IIS應用程序的位置。

使用虛擬路徑,並且Server.MapPath方法將其映射到文件夾相對於所述web根:

StreamReader(Server.MapPath("Resources/file.txt"))