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

388

被折叠的 条评论
为什么被折叠?



