zoukankan      html  css  js  c++  java
  • 绝对路径和相对路径

    System.IO 命名空间中很多类型的成员都包括 path 参数,让你可以指定指向某个文件系统资源的绝对路径或相对路径。 此路径随后会传递至 Windows 文件系统 API。 本主题讨论可在 Windows 系统上使用的文件路径格式。

    传统 DOS 路径

    标准的 DOS 路径可由以下三部分组成:

    • 卷号或驱动器号,后跟卷分隔符 (:)。
    • 目录名称。 目录分隔符用来分隔嵌套目录层次结构中的子目录。
    • 可选的文件名。 目录分隔符用来分隔文件路径和文件名。

    如果以上三项都存在,则为绝对路径。 如未指定卷号或驱动器号,且目录名称的开头是目录分隔符,则路径属于当前驱动器根路径上的相对路径。 否则路径相对于当前目录。 下表显示了一些可能出现的目录和文件路径。

    路径描述
    C:DocumentsNewslettersSummer2018.pdf C: 盘根路径上的绝对文件路径。
    Program FilesCustom UtilitiesStringFinder.exe 当前驱动器根路径上的绝对路径。
    2018January.xlsx 指向当前目录的子目录中的文件的相对路径。
    ..PublicationsTravelBrochure.pdf 指向当前目录的同级目录中的文件的相对路径。
    C:Projectsapilibraryapilibrary.sln 指向 C: 盘根路径中的文件的绝对路径。
    C:Projectsapilibraryapilibrary.sln C: 盘当前目录上的相对路径。

     重要

    请注意最后两个路径之间的差异。 两者都指定了可选的卷说明符(均为“C:”),但前者以所指定卷的根开头,而后者不是。 结果,前者表示 C: 盘根目录上的绝对路径,而后者表示 C: 盘当前目录上的相对路径。 应使用前者时使用了后者是涉及 Windows 文件路径的 bug 的常见原因。 

    UNC 路径

    通用命名约定 (UNC) 路径,用于访问网络资源,具有以下格式:

    • 一个以 \ 开头的服务器名或主机名。 服务器名称可以为 NetBIOS 计算机名称或者 IP/FQDN 地址(支持 IPv4 和 IPv6)。
    • 共享名,使用 将其与主机名分隔开。 服务器名和共享名共同组成了卷。
    • 目录名称。 目录分隔符用来分隔嵌套目录层次结构中的子目录。
    • 可选的文件名。 目录分隔符用来分隔文件路径和文件名。

    以下是一些 UNC 路径的示例:

    路径描述
    \system07C$ system07 上 C: 盘的根目录。
    \Server2ShareTestFoo.txt \Server2Share 卷的测试目录中的 Foo.txt 文件。

    UNC 路径必须始终是完全限定的。 它们可以包括相对目录段(. 和 ..),但是这些目录段必须是完全限定的路径的一部分。 只能通过将 UNC 路径映射至驱动器号来使用相对路径。

    DOS 设备路径

    Windows 操作系统有一个指向所有资源(包括文件)的统一对象模型。 可从控制台窗口访问这些对象路径;并通过旧版 DOS 和 UNC 路径映射到的符号链接的特殊文件,将这些对象路径公开至 Win32 层。 此特殊文件夹可通过 DOS 设备路径语法(以下任一)进行访问:

    \.C:TestFoo.txt
    \?C:TestFoo.txt

     备注

    从 NET Core 1.1 和 .NET Framework 4.6.2 开始,运行在 Windows 上的 .NET 实现支持 DOS 设备路径语法。

    DOS 设备路径由以下部分组成:

    • 设备路径说明符(\. 或 \?),它将路径标识为 DOS 设备路径。

       备注

      .NET Core 的所有版本以及从 4.6.2 开始的 .NET Framework 版本都支持 \?

    • 指向“真正”设备对象(这里是 C:)的符号链接。

      设备路径说明符后的第一个 DOS 设备路径段标识了卷或驱动器。 (例如,\?C: 和 \.BootPartition。)

      UNC 有个特定的链接,很自然地名为 UNC。 例如:

      \.UNCServerShareTestFoo.txt
      \?UNCServerShareTestFoo.txt

      对于设备 UNC,服务器/共享部分构成了卷。 例如,在 \?server1e:utilities\filecomparer 中,服务器/共享部分是 server1utilities。 使用相对目录段调用 Path.GetFullPath(String, String) 等方法时,这一点非常重要;决不可能越过卷。

    DOS 设备路径通过定义进行完全限定。 不允许使用相对目录段(. 和 ..)。 也不会包含当前目录。

  • 相关阅读:
    linux ssh 安装、安全设置
    STL底层数据结构实现
    谷粒商城踩坑汇总(分布式高级篇)
    谷粒商城踩坑汇总(分布式基础(全栈开发篇))
    使用Vagrant 后发现虚拟机磁盘空间爆满的血泪填坑记
    Tomcat启动时,控制台和IDEA控制台中文乱码解决方案
    Unknown initial character set index '255' received from server. Initial client character set can be ... 解决方法
    idea打包成功但是resource下的文件没有复制到classes文件夹的解决方法
    tomcat控制台中文乱码怎么处理
    idea中tomcat启动时控制台中文乱码解决
  • 原文地址:https://www.cnblogs.com/woniucode/p/10081082.html
Copyright © 2011-2022 走看看