如何在C#中从文本文件中读取数据,即使文件位置未知?

3
此问题之前曾在StackOverFlow上问过,答案也在那篇文章中标注了。但遗憾的是,提供在Read a file from an unknown location?中的解决方案不能解决我的问题。
我正在构建一个网站,并需要从文本文件中读取数据。该文件在我的计算机上的实际位置为:C:\Developments\TestProject\PettyCashSolution\PettyCashWeb\DataFile.txt,我已经尝试了以上链接的以下解决方案,但没有成功。
string sString = string.Empty;
string sStr = "";
StreamReader oStreamReader;
try
{ 

尝试1

sStr = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "DataFile.txt");

以下是返回结果:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\pettycashweb\af7f0870\c5ac294a\DataFile.txt

尝试2

sStr = Path.Combine(Application.StartupPath, "DataFile.txt");

这将返回以下结果:
编译错误:当前上下文中不存在“Application”名称。
尝试第三步。
oStreamReader = new StreamReader(File.OpenRead(Directory.GetCurrentDirectory().ToString() + "\\DataFile.txt"));

以下是返回结果:
异常:找不到文件'C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\DataFile.txt'

oStreamReader = new StreamReader(sStr);
sString = oStreamReader.ReadLine();

}
catch (Exception ex)
{
}

请问我需要怎样做才能确保在将网站发布到服务器(iis)后,从文本文件中读取的数据能够正常工作。谢谢。

2个回答

4

您可以通过AppDomain.CurrentDomain.BaseDirectory获取应用程序路径。

您的代码必须像这样:

sStr = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFile.txt");


太好了,它可以运行,谢谢。只有一个问题,将网站托管到服务器后,这种方法还能正常工作吗? - vpv
是的,当您将代码发布到服务器时它会工作。不用谢 :) - Özgür Kara

0

你可以使用

HttpContext.Current.Request.ApplicationPath

然后根据它附加字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接