C#/asp.net#获取当前项目【相对】【绝对】路径

dotnet路径获取合集:
项目路径、当前路径、相对路径、绝对路径。
根目录、上层目录、环境变量。
安装目录、文件名、扩展名、路径转换。

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”,仍然是服务器目录下

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

电子邮件地址不会被公开。