【问题标题】:IO.StreamReader(filename) SillynessIO.StreamReader(filename)
【发布时间】:2012-08-27 23:32:05
【问题描述】:
为什么我不能为IO.StreamReader("Resources/file.txt") 使用相对路径?
我正在使用一个网络应用程序,所以很明显该文件不会位于我的开发机器和服务器之间的相同绝对位置。
如何修复我的文件名路径以便它找到文件?
作为参考,我在路径“Resources/file.txt”中有一个文件(相对于调用它的页面),但愚蠢的函数正在根目录“C:\Program Files (x86)\Microsoft Visual Studio 9.0\通用7\IDE。”以防万一,我目前使用的是 .NET 3.5。
谢谢。 :)
【问题讨论】:
标签:
asp.net
vb.net
relative-path
streamreader
【解决方案1】:
使用 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
【解决方案2】:
这是因为您的工作文件夹不是 Web 根目录所在的位置,而是应用程序所在的位置。开发时,它位于 Visual Studio 应用程序所在的位置,而在实时服务器上,它将位于 IIS 应用程序所在的位置。
使用虚拟路径和Server.MapPath 方法将其映射到相对于网络根目录的文件夹:
StreamReader(Server.MapPath("Resources/file.txt"))