c#中怎么获取当前文件的绝对路径?

时间:2022-08-26 15:33:20
比如一个类A
namespace test.components.business
{
 public class A
 {
 }
}
该文件在工程中的路径应该是components/business/A.cs
现在我要在类A中获取该类对应文件的绝对路径,即如果工程路径是c:\wwwroot\test\,则我要能返回c:\wwwroot\test\components\business\A.cs
我用Environment.CurrentDirectory和Directory.GetCurrentDirectory都只能返回系统目录c:\winnt\system,如果用Server.Mappath("/")好象返回的是虚拟目录的根目录,也不是工程目录。

6 个解决方案

#1


Server.Mappath("./components/business/A.cs
");

#2



try
Request.PhysicalPath

#3


我知道了,用HttpRuntime.AppDomainAppPath
Request.PhysicalPath和Server.Mappath("./components/business/A.cs
");我认为都不太合适。因为我的类文件和Request以及Page没有任何关系,是一个独立的组件。

#4


Server.Mappath会不适合?

#5


我这里自己写了个方法,原来是用来读数据库配置文件的,后来写到web.conf里面去了,不过我觉得还是很有用的一个方法。你试一下。自己看看代码再改吧。
private string readConfFile()
{
System.IO.StreamReader sr;
try
{
System.Web.UI.Page page = new System.Web.UI.Page();

string str = page.Server.MapPath("dbConf.txt");
str=str.Substring(0,str.IndexOf("Pub"));
str+="Classes\\Common\\Business\\dbConf.txt";
str=str.Replace("\\","\\\\");
sr=File.OpenText(str);
while(sr.Peek()!=-1)
{
conString+=sr.ReadLine();
}
sr.Close();
}
catch(Exception ee)
{
return ee.Message.ToString();
}
return conString;
}

#6


怎么读配置文件我是知道的。主要是程序路径。按我的方法一切正常。

#1


Server.Mappath("./components/business/A.cs
");

#2



try
Request.PhysicalPath

#3


我知道了,用HttpRuntime.AppDomainAppPath
Request.PhysicalPath和Server.Mappath("./components/business/A.cs
");我认为都不太合适。因为我的类文件和Request以及Page没有任何关系,是一个独立的组件。

#4


Server.Mappath会不适合?

#5


我这里自己写了个方法,原来是用来读数据库配置文件的,后来写到web.conf里面去了,不过我觉得还是很有用的一个方法。你试一下。自己看看代码再改吧。
private string readConfFile()
{
System.IO.StreamReader sr;
try
{
System.Web.UI.Page page = new System.Web.UI.Page();

string str = page.Server.MapPath("dbConf.txt");
str=str.Substring(0,str.IndexOf("Pub"));
str+="Classes\\Common\\Business\\dbConf.txt";
str=str.Replace("\\","\\\\");
sr=File.OpenText(str);
while(sr.Peek()!=-1)
{
conString+=sr.ReadLine();
}
sr.Close();
}
catch(Exception ee)
{
return ee.Message.ToString();
}
return conString;
}

#6


怎么读配置文件我是知道的。主要是程序路径。按我的方法一切正常。