路径的写法

来源:互联网 发布:淘宝人气店铺 编辑:程序博客网 时间:2024/06/05 09:16

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>

如何表示下级目录 

../表示源文件所在目录的上一级目录,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>

 

绝对路径

例如只要看到这个路径:c:/website /img/photo.jpg我们就知道photo.jpg文件是在c盘的website目录下的img子目录中。

而在网站中类似以http://www.ajaxstu.com/img/photo.jpg来确定文件位置的方式也是绝对路径。

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

没有本质的区别

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

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



ASP.NET 网站路径

使用网站资源时,需要经常使用资源路径。比如,在页面中使用 URL 引用不同路径中的图片文件。类似地,Web 应用代码也可能使用物理文件路径来读写服务器端的文件。ASP.NET 提供不同的方法来引用资源并确定页面或其他资源的路径。

指定资源路径

ASP.NET 允许开发者通过多种方式引用页面元素或控件的外部资源文件。选择方式区别于客户端元素或服务器控件的类型。

客户端元素

页面中非服务器控件直接发送给浏览器。在此前,需要依照标准 HTML URL 规则构造用于客户端元素的资源引用路径。也可以使用完整(绝对)URL 路径或别的相关路径。比如 img 标记,可以将 src 属性设置成以下任何一种形式:

  • 绝对 URL 路径:

    <img src="http://www.contoso.com/MyApplication/Images/SampleImage.jpg" />

    绝对 URL 路径适用于引用对其他网站的资源。

  • 根目录相对路径针对网站(非应用程序)根目录进行解析。下例假设网站根目录存在 Images 目录:

    <img src="/Images/SampleImage.jpg" />

    如果网站地址是 http://www.contoso.com,上例中的路径将解析成:

    http://www.contoso.com/Images/SampleImage.jpg

    根目录相对路径适用于引用跨应用程序资源(图片或客户端脚本文件)。

  • 相对路径针对当前路径进行解析:

    <img src="Images/SampleImage.jpg" />
  • 相对路径会解析成当前页面路径。

    <img src="../Images/SampleImage.jpg" />

    注意:默认时,浏览器参考当前页面的 URL 来解析相对路径。然而,使用 HTML 的 base 元素可以进行更换。

服务器控件

可以使用与客户端元素相同的方式指定 ASP.NET 服务器控件的资源引用路径。相对路径的解析会以当前页面,用户控件,或主题文件路径作为参照。比如,Controls 目录有一个用户控件,包含 ImageUrl 属性被设置成如下路径的 Image Web 控件:

Images/SampleImage.jpg

用户控件运行时,路径被解析成如下所示:

/Controls/Images/SampleImage.jpg

不用考虑使用该用户控件的页面路径。

在服务器控件中引用绝对路径或相对路径有下列缺点:

  • 绝对路径无法在应用程序间移植。有造成所有链接中断的隐患。

  • 客户端元素的相对路径在资源或页面移动时加大维护难度。

为了克服这些缺点,ASP.NET 使用了新 Web 根目录符号(~),用于设置服务器控件的路径。ASP.NET 将符号 ~ 解析成当前应用程序的根目录。可以用符号 ~ 与目录一道来指定基于当前根目录的路径。下例使用了符号 ~ 为服务器控件 Image 指定相对路径。

<asp:image runat="server" id="Image1" ImageUrl="~/Images/SampleImage.jpg" />

上例中的图片文件将会从网站根目录下的 Images 目录中读取,且当前页面可以放在网站的任何位置。

说明:符号 ~ 仅适用于服务器端代码的服务器控件。不能在客户端元素中使用。

服务器控件中任何与路径有关的属性都可使用符号 ~。

注意:在模板页中,对资源路径的解析是基于内容页面的。

确定当前网站的物理路径

应用程序中,可能需要确定服务器文件或资源的路径。比如,当应用程序要对一个文本文件进行读写,就需要为读取和写入功能提供目标文件的物理路径。

在应用程序中使用硬编码的物理路径(如 C:\Webste\MyApplication)并不是一个好的习惯,且路径会随着文件的移动或布署而发生变化。这时候可以通过基点参考的方法来为资源创建完整路径。ASP.NET 中常用来确定文件路径有两个方法:HttpRequest 对象属性,以及 MapPath 方法。

注意:为防止恶意用户获取应用程序的机密信息,请不要将物理文件路径发送到客户端。

从 Request 对象的属性中确定路径

下表是 HttpRequest 对象的属性列表,可用来确定应用程序中的资源路径。

首先,假设用浏览器发送如下请求:

http://www.contoso.com/MyApplication/MyPages/Default.aspx

在本文的例子中,对“虚拟路径”的参考都将服务器标识作为 URI 的一部分;而本例中的虚拟路径则是这样:

/MyApplication/MyPages/Default.aspx

另外,还假设网站根目录的物理路径如下:

C:\inetpub\wwwroot\MyApplication\

最后,还假设物理路径中包含子目录 MyPages。

属性描述

ApplicationPath

获取当前应用程序根目录,无需考虑请求发生的位置。本例中的返回值如下:

/

CurrentExecutionFilePath

获取当前请求的虚拟目录。与 FilePath 不同是请求被代码重定向时CurrentExecutionFilePath 属性仍然返回正常值。本例中的返回值如下:

/MyApplication/MyPages/Default.aspx

如果在代码中作为 Transfer 或 Execute 的执行结果而获取该参数,参数中会反射代码文件的路径。

FilePath

获取当前请求的虚拟路径。本例中的返回值如下:

/MyApplication/MyPages/Default.aspx

与 CurrentExecutionFilePath 不同,FilePath 不反射服务器端的传送(调用 Transfer 方法)信息。

Path

获取当前请求的虚拟路径。本例中的返回值如下:

/MyApplication/MyPages/default.aspx

PhysicalApplicationPath

获取当前执行的应用程序根目录的物理路径。本例中的返回值如下:

C:\inetpub\wwwroot\

PhysicalPath

获取当前 URI 请求对应的物理系统文件路径。本例中的返回值如下:

C:\inetpub\wwwroot\MyApplication\MyPages\default.aspx
使用 MapPath 方法

MapPath 方法以参数的方式接收虚拟路径,并返回对应的物理路径。在本例中,下面的代码返回网站根目录文件的物理路径:

String rootPath = Server.MapPath("~");

注意:传递给 MapPath 方法的路径必须是相对路径,不能使用绝对路径。


0 0
原创粉丝点击