C# 获取当前项目路径 :
//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。 string str = System.Environment.CurrentDirectory; //result: X:/xxx/xxx (.exe文件所在的目录)
同样是C# 语言,在不同的项目里,有不同的结果。在web项目中用,System,Environment.CurrentDirectory得到的是VS的路径。但是在winform项目里,得到的是当前项目的debug路径。
Asp.net获取当前项目路径:
//方法一: //获取当前项目的路径 System.AppDomain.CurrentDomain.BaseDirectory.ToString(); // 得到的是当前项目的根目录 取的值:F://Project//System2.0//SystemForm// //方法二: //获取当前项目的路径 //Server对象在页面中使用 string path=Server.MapPath("."); 取的值:F://Project//System2.0//SystemForm//secure
绝对路径和相对路径
绝对路径
绝对路径就是你的主页上的文件或目录在硬盘上真正的路径。比如:E:\新概念英语\新版新概念英语第二册课文PDF.pdf。以Web 站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。
"/" -- 代表根目录,绝对路径。 如:<a href="/abc">文本</a> 或 <img src="/abc" /> "D:/abc/" -- 代表根目录,绝对路径。
相对路径
以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。
以下为建立路径所使用的几个特殊符号,及其所代表的意义。
"." -- 代表目前所在的目录,相对路径。 如:<a href="./abc">文本</a> 或 <img src="./abc" /> ".." -- 代表上一层目录,相对路径。 如:<a href="../abc">文本</a> 或 <img src="../abc" /> "../../" -- 代表的是上一层目录的上一层目录,相对路径。 如:<img src="../../abc" />
在使用相对路径时,我们用符号“.”来表示当前目录,用符号“..”来表示当前目录的父目录。
/ 是超文本协议的路径分隔符号,所有的网站在浏览器中显示的路径分隔都是以”/”表示.它一般代表虚拟路径.
在普通程序代码中则以”\”表示文件路径分隔符号.它一般指物理路径.
./ 表示在当前路径下,
../表示在当前路径的上一级路径下.
~/表示当前网站的根目录下.
还有 /和\\ 是等值得的!
在表示路径时有两大体系:
1、在windows下表示文件的位置,用反斜杠“\” ,例如:E:\新概念英语\新版新概念英语第二册课文PDF.pdf
2、网络路径,例如http://www.tianqiweiqi.com/index.aspx.
注意:路径中/和反斜杠的区别,在操作ftp中用到的也是网络路径,如果使用\,是解析不了的,之前在项目中,就吃过这方面的亏。
总结
~/在runat=server的控件中,自动的被解析为Request.ApplicationPath的值,是当前应用程序级程序的目录(用在服务器控件中)。
/:表示当前目录。
../表示上一层目录。
/表示根目录。
获取文件全路径、目录、扩展名、文件名称
using System; using System.IO; namespace ConsoleApp5 { class Program { /* C# 获取当前目录、当前路径、文件全路径、目录、扩展名、文件名称 */ static void Main(string[] args) { //1.获取模块的完整路径。 string path1 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; //2.获取和设置当前目录(该进程从中启动的目录)的完全限定目录 string path2 = System.Environment.CurrentDirectory; //3.获取应用程序的当前工作目录 string path3 = System.IO.Directory.GetCurrentDirectory(); //4.获取程序的基目录 string path4 = System.AppDomain.CurrentDomain.BaseDirectory; //5.获取和设置包括该应用程序的目录的名称 string path5 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //6.获取启动了应用程序的可执行文件的路径 //string path6 = System.Windows.Forms.Application.StartupPath; //7.获取启动了应用程序的可执行文件的路径及文件名 //string path7 = System.Windows.Forms.Application.ExecutablePath; Console.WriteLine(path1); Console.WriteLine(path2); Console.WriteLine(path3); Console.WriteLine(path4); Console.WriteLine(path5); //获取当前运行程序的目录 string fileDir = Environment.CurrentDirectory; Console.WriteLine("当前程序目录:" + fileDir); //一个文件目录 string filePath = "C:\\123.jpg"; Console.WriteLine("该文件的目录:" + filePath); string str = "获取文件的全路径:" + Path.GetFullPath(filePath); Console.WriteLine(str); str = "获取文件所在的目录:" + Path.GetDirectoryName(filePath); Console.WriteLine(str); str = "获取文件的名称含有后缀:" + Path.GetFileName(filePath); Console.WriteLine(str); str = "获取文件的名称没有后缀:" + Path.GetFileNameWithoutExtension(filePath); Console.WriteLine(str); str = "获取路径的后缀扩展名称:" + Path.GetExtension(filePath); Console.WriteLine(str); str = "获取路径的根目录:" + Path.GetPathRoot(filePath); Console.WriteLine(str); Console.ReadKey(); } } }
路径获取方法汇总
一、C#获取当前路径的方法:
1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
-获取模块的完整路径。
2. System.Environment.CurrentDirectory
-获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
3. System.IO.Directory.GetCurrentDirectory()
-获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\www里,这个函数有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\。
4. System.AppDomain.CurrentDomain.BaseDirectory
-获取程序的基目录。
5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
-获取和设置包括该应用程序的目录的名称。
6. System.Windows.Forms.Application.StartupPath
-获取启动了应用程序的可执行文件的路径。
7. System.Windows.Forms.Application.ExecutablePath
-获取启动了应用程序的可执行文件的路径及文件名。
二、操作环境变量
利用System.Environment.GetEnvironmentVariable()方法可以很方便地取得系统环境变量,如:
System.Environment.GetEnvironmentVariable(“windir”)就可以取得windows系统目录的路径。
以下是一些常用的环境变量取值:
System.Environment.GetEnvironmentVariable(“windir”)=C:\WINDOWS
System.Environment.GetEnvironmentVariable(“INCLUDE”)=C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
System.Environment.GetEnvironmentVariable(“TMP”)=C:\DOCUME~1\zhoufoxcn\LOCALS~1\Temp
System.Environment.GetEnvironmentVariable(“TEMP”)=C:\DOCUME~1\zhoufoxcn\LOCALS~1\Temp
System.Environment.GetEnvironmentVariable(“Path”)=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\jdk1.5.0\bin;C:\MySQLServer5.0\bin;C:\Program Files\Symantec\pcAnywhere\;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
三、关于”\”
1 asp.net webform
A:Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“\”;
2.c# winform
A:“Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“\”;
B:“Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;如:export.exe
C:“AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“\”;
D:“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“\”;
E:“Environment.CurrentDirectory”:获取当前应用程序的路径,最后不包含“\”;
F:“System.IO.Directory.GetCurrentDirectory”:获取当前应用程序的路径,最后不包含“\”;
四、程序卸载获取系统安装目录
System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();
string path=curPath.Location;//得到安装程序类SetupLibrary文件的路径,获取这个文件路径所在的目录即得到安装程序的目录;
五、asp.net 获取路径
1.Request.ApplicationPath->当前应用的目录
Jsp中, ApplicationPath指的是当前的application(应用程序)的目录,ASP.NET中也是这个意思。
对应的–例如我的服务器上有两个web应用域名都是tianqiweiqi.com 一个映射到目录tianqiweiqi.com/1/ 另一个影射到 http://tianqiweiqi.com/2/
那么tianqiweiqi.com/1/就是第一个应用的ApplicationPath 同理 tianqiweiqi.com/2/就是第二个应用的ApplicationPath
2.Request.FilePath->对应于iis的虚拟目录
如 URL http://tianqiweiqi.com/1/index.html/pathinfo
FilePath = /1/index.html
3.Request.Path->当前请求的虚拟路径
Path 是 FilePath 和 PathInfo 尾部的串联。例如 URL http://tianqiweiqi.com/1/index.html/pathinfo
那么Path = /1/index.html/pathinfo
4.Request.MapPath(string url)->将url映射为iis上的虚拟目录
这个目录都是相对于application的根目录的
于Server.MapPath相比,不会包含类似c:/这样的路径
可以理解为是相对路径(对比的Server.MapPath就是绝对路径)
5.Server.MapPath(string url)->将url映射为服务器上的物理路径
例如 http://tianqiweiqi.com/1/index.html 假设你的应用程序在c:/iis/MySite中
那么就是 c:/iis/MySite/1/index.html
路径转换代码:
//本地路径转换成URL相对路径 private string urlconvertor(string imagesurl1) { string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录 string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); //转换成相对路径 imagesurl2 = imagesurl2.Replace(@"/", @"/"); //imagesurl2 = imagesurl2.Replace(@"Aspx_Uc/", @""); return imagesurl2; } //相对路径转换成服务器本地物理路径 private string urlconvertorlocal(string imagesurl1) { string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录 string imagesurl2 = tmpRootDir + imagesurl1.Replace(@"/", @"/"); //转换成绝对路径 return imagesurl2; }
1.使用filePath=”/Logs/abc.txt”,被认为是根目录,即网页文件所在的盘符,默认的是C盘,则在这里这个路径被解释为”C:/Logs/abc.txt”
2.使用filePath=”~/Logs/abc.txt”,被认为是服务器的目录
3.使用filePath=”./Logs/abc.txt”,仍然是服务器目录下