相对路径 VS 绝对路径

本文介绍了相对路径和绝对路径的概念,以C#和HTML为例阐述了它们在文件引用和超链接中的使用。相对路径根据源文件与目标文件的位置关系进行引用,如使用'.'表示当前目录,'..'表示上级目录,'/'在HTML中表示根目录。绝对路径则提供完整的文件位置。在C#中,'\"是特殊字符,需使用'\'或 '@' 符号来正确表示路径。同时,文章提到了文件路径中'/‘和'’的区别,并列举了C#获取当前路径的不同方法。

 

 

路径有3种方式,当前目录下的C#文件相对路径、当前工作盘的C#文件相对路径、绝对路径。以C:\Tmp\Book为例(假定当前工作目录为C:\Tmp)。“Book”,“\Tmp\Book”,“C:\Tmp\Book”都表示C:\Tmp\Book。

另外,在C#中 “\”是特殊字符,要表示它的话需要使用“\\”。由于这种写法不方便,C#语言提供了@对其简化。只要在字符串前加上@即可直接使用“\”。所以上面的路径在C#中应该表示为“Book”,@“\Tmp\Book”,@“C:\Tmp\Book”。

(1)HTML相对路径与绝对路径

相对路径

同一个目录的文件引用
如果源文件和引用文件在同一个目录里,直接写引用文件名即可,这时引用文件的方式就是使用相对路径。

我们现在建一个源文件info.html,在info.html里要引用index.html文件作为超链接。

假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html
假设index.html路径是:c:/Inetpub/wwwroot/sites/blabla/index.html
在info.html加入index.html超链接的代码应该这样写:

<a href = "index.html">这是超连接</a>   或

<a href = "./index.html">这是超连接</a>  

如何表示上级目录

../表示源文件所在目录的上一级目录,http://www.cnblogs.com/表示源文件所在目录的上上级目录,以此类推。

<a href = "http://www.cnblogs.com/index.html">index.html</a>
假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html
假设index.html路径是:c:/Inetpub/wwwroot/sites/wowstory/index.html
在info.html加入index.html超链接的代码应该这样写:

<a href = "../wowstory/index.html">index.html</a>

如何表示下级目录
引用下级目录的文件,直接写下级目录文件的路径即可。

假设info.html路径是:c:/Inetpub/wwwroot/sites/blabla/info.html
假设index.html路径是:c:/Inetpub/wwwroot/sites/blabla/html/tutorials/index.html
在info.html加入index.html超链接的代码应该这样写:

<a href = "html/tutorials/index.html">这是超连接</a>

 /          根目录,注意与~是有区别的  

./          直接写表示与当前网页是统一目录  (一般直接写) 

../  是从当前从上数,上级目录

~    一般与ResolveUrl一起使用,将URL转换成客户端可用的URL,一般用于在不同目录下调用模版,模板中调用图片,加载CSS,如果使用相对路径,在不同目录调用会出问题。ResolveUrl解决此问题在不同目录自动生成相应路径。

  mychart.ChartAreas["ChartArea2"].BackImage = ResolveUrl("~/images/车速.png"); ---用户控件

url: '<%=ResolveUrl("~/management/VehicleMonitoring/LockUnlock.ashx")%>',

 

(2)文件路径中的/和\的区别

没有本质的区别

“\”是用在系统上,而“/“一般是用在网络上

但是由于   \   也是转义字符的起始字符,所以,路径中的   \   通常需要使用   \\,如果是   /   就不需要使用转义了

C#中,斜杠“\”是转义字符,表示路径是采用“\\”代替“\”,避免把这个字符解释为转义字符。如
“c:\\microfoft\\readme.txt”
,也可以用“@”代替,在路径前加“@”符号,“\”就不会再被解释为转义符。如:@"c:\microfoft\readme.txt”

  

C#中获取程序当前路径的方法

string str1 =Process.GetCurrentProcess().MainModule.FileName;//获得当前执行的exe的文件名。
string str2=Environment.CurrentDirectory;//获取和设置当前目录的完全限定路径。
string str3=Directory.GetCurrentDirectory();//获取应用程序的当前工作目录。
string str4=AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集。
string str5=Application.StartupPath;//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str6=Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取或设置包含该应用程序的目录的名称。
“Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“/”;
“Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;
“AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“/”;
“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“/”;
“Environment.CurrentDirectory”:获取当前应用程序的路径,最后不包含“/”;
“System.IO.Directory.GetCurrentDirectory”:获取当前应用程序的路径,最后不包含“/”;

 

 --上个版本中对"~"的说明有误--20140616

 

 

 

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值