IO.StreamReader(文件名)愚蠢

时间:2012-08-27 23:32:05

标签: asp.net vb.net relative-path streamreader

为什么我不能使用IO.StreamReader("Resources/file.txt")的相对路径?

我正在使用网络应用,所以显然该文件不会位于我的开发机器和服务器之间的绝对位置。

如何修复文件名路径以便找到文件?

作为参考,我有一个文件(相对于调用它的页面)在路径“Resources / file.txt”但是愚蠢的函数正在查找根“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE“。如果重要的话,我现在正在使用.NET 3.5。

感谢。 :)

2 个答案:

答案 0 :(得分:2)

使用HttpContext.Current.Server.MapPath(filename)以字符串形式查找文件的相对路径,然后将其传递给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

答案 1 :(得分:2)

那是因为您的工作文件夹不是Web根目录所在的位置,而是应用程序所在的位置。在开发Visual Studio应用程序时,在实时服务器上,它将是IIS应用程序所在的位置。

使用虚拟路径和Server.MapPath方法将其映射到相对于Web根目录的文件夹:

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