
[code]

    import java.io.*;
    import java.nio.file.*;
    
    class Test {
        public static void main(String[] args)throws IOException{
            Path p1 = Paths.get("C:\\gold\\.");
            p1 = p1.resolve("dir1");
            Path p2 = Paths.get("C:\\gold");
            p2 = p2.resolve("\\dir2");
            System.out.print(p1 + " : ");
            System.out.print(p2);
        }
    }
    
[/code]

変数p2は"C:\dir2"に出力されますが、resolveメソッドの引数である

"\dir2"は絶対パスではありません。

私の考えでは変数p2の出力結果は"C:\gold\dir2"のはずですが、私の認識になにが

間違えているのか教えてください。


CC BY-SA 3.0
2017-12-24T03:33:58.107
40505
2017-12-24T09:41:51.910
2017-12-24T09:41:51.910
9575
26763
question
java windows
Pathクラスのresolveメソッド


<https://msdn.microsoft.com/ja-
jp/library/windows/desktop/aa365247(v=vs.85).aspx#paths>

の記載によると、

  * `\\`(2つのバックスラッシュ)ではじまるもの(UNCパス)
  * `C:\`、`d:\`など、ドライブレターとスラッシュではじまるもの
  * `\`(一つのバックスラッシュではじまる)もの

が、絶対パスですので、`\dir2`は絶対パスです。

* * *

以下原文

> Fully Qualified vs. Relative Paths
>
> For Windows API functions that manipulate files, file names can often be
> relative to the current directory, while some APIs require a fully qualified
> path. A file name is relative to the current directory if it does not begin
> with one of the following:
>
>   * A UNC name of any format, which always start with two backslash
> characters ("\\\"). For more information, see the next section.
>   * A disk designator with a backslash, for example "C:\" or "d:\".
>   * A single backslash, for example, "\directory" or "\file.txt". This is
> also referred to as an absolute path.
>


CC BY-SA 3.0
2017-12-24T09:40:49.473
40513
2017-12-24T09:40:49.473
9575
40505
answer