Path

5448 ワード

JavaのPathインタフェースは、Java 6とJava 7の2回の更新の一部です.JavaのPathインタフェースは、Java 7にJava NIOが組み込まれています.Pathインターフェースはjava.nio.fileパケットの下にあるので、Pathインターフェースの権限の命名はjava.nio.file.Pathである.
1つのPathインスタンスは、ファイルシステムのパスを表す.パスは、ファイルまたはディレクトリを指します.パスは相対パスまたは絶対パスです.絶対パスには、ファイルシステムのルートパスから、その指向するファイルまたはディレクトリへの全パスが含まれます.相対パスには、ファイルまたはディレクトリの他のパスに対するパスが含まれます.相対経路は少し混乱しているように聞こえるかもしれません.心配しないでください.このチュートリアルで相対パスを詳しく説明します.
ファイルシステムのパスといくつかのオペレーティングシステムのpath環境変数を混同しないでください.java.nio.file.Pathインタフェースはpath環境変数とは少しも関係ありません.java.nio.file.Pathは多くの点でjava.io.Fileと似ているが、わずかな違いもある.多くの場合、Pathの代わりにFileを使用することができます.
Creating a Path Instance java.nio.file.Pathを使用する前に、Pathインスタンスを作成する必要があります.Paths(java.nio.file.Paths)クラスの静的メソッドPaths.get()によってPathインスタンスを作成できます.次に例を示します.
import java.nio.file.Path;
import java.nio.file.Paths;

public class PathExample {
    public static void main(String[] args) {
        Path path = Paths.get("c:\\data\\myfile.txt");
    }
}

例の最初の2行import文に注意してください.PathインタフェースとPathsクラスを使用する前に、importクラスを使用する必要があります.
第二に、Paths.get("c:\\data\\myfile.txt")というメソッド呼び出しに注意してください.Paths.get()のメソッド呼び出しにより、Pathのインスタンスを作成した.言い換えれば、Paths.get()方法は、Path例を製造するプラント方法である.
Creating an Absolute Path Paths.get()メソッドが呼び出されると、絶対ファイルが転送され、絶対パスが作成されます.次に、絶対パスを表すPathインスタンスを作成します.
Path path = Paths.get("c:\\data\\myfile.txt");

この絶対パスは:c:datamyfile.txt.Java文字列では、「」はエスケープ文字、すなわちその後ろの文字が現在の文字列のこの位置の本当の文字であるため、2つの「」を使用する必要があります.「」と書くのは、Javaコンパイラにここで「」を書くように伝えることです.
上のパスはWindowsファイルシステムのパスです.Unix(Linux、MacOS、FreeBSDなど)システムでは、上記の絶対パスがこのように見える可能性があります.
Path path = Paths.get("/home/jakobjenkov/myfile.txt");

今、この絶対パスは:/home/jakobjenkov/myfile.txt.
Windowsサーバ上でこのパス(/)を使用すると、このパスは現在のディスクに対するパスとして扱われます.たとえば、次のパスです.
/home/jakobjenkov/myfile.txt

Cディスクと見なすことができます.このパスは次の完全なパスに対応します.
C:/home/jakobjenkov/myfile.txt

Creating a Relative Path
相対パスは、1つのパス(データムパス)からファイルまたはディレクトリへのパスです.その完全なパス(絶対パス)は、データムパスと相対パスが結合されています.
Java NIOのPathクラスも相対パスを扱うことができる.Paths.get(basePath, relativePath)メソッドを呼び出すことによって、相対パスを作成することができる.次の2つの例を示します.
Path projects = Paths.get("d:\\data", "projects");
Path file = Paths.get("d:\\data", "projects\\a-project\\myfile.txt");

1つ目の例は、d:dataprojects(ディレクトリ)を指すPathインスタンスを作成します.2つ目の例は、d:dataprojectsa-projectmyfile.txt(ファイル)を指すPathインスタンスを作成します.
相対パスを処理するときに、パス文字列で使用できる特殊な文字が2つあります.それらは(注意して、あなたは目がくらんでいません):
  • .
  • ..

  • “.”現在のディレクトリを表します.たとえば、このように相対パスを作成すると、次のようになります.
    Path currentDir = Paths.get(".");
    System.out.println(currentDir.toAbsolutePath());
    

    では、このPath例に対応する絶対パスは、上記のコードを実行するプログラムが存在するディレクトリである.
    パス文字列の間で「.」を使用すると、このパスがその場所にある同じディレクトリを意味するだけです.次の例を見てください.
    Path currentDir = Paths.get("d:\\data\\projects\.\a-project");
    

    このパスは次のパスと同じです.
    d:\data\projects\a-project
    

    “..”親ディレクトリまたは親ディレクトリを表します.次の例を見てください.
    Path parentDir = Paths.get("..");
    

    この例で作成されたPathインスタンスは、これらのコードを実行するプログラムを起動するディレクトリの親ディレクトリに対応する.
    パス文字列の間に「..」を使用すると、ディレクトリがその方向に移動します.例:
    String path = "d:\\data\\projects\\a-project\\..\\another-project";
    Path parentDir2 = Paths.get(path);
    

    この例で作成されたPathインスタンスは、次のパスに対応しています.
    d:\data\projects\another-project
    

    a-projectの後の"."パス全体をprojectsディレクトリに移動し、そこからanother-projectディレクトリに参照します.
    “.”および2つのStringパラメータを有するPaths.get()の方法においても使用することができる.次の2つの簡単な例を示します.
    Path path1 = Paths.get("d:\\data\\projects", ".\\a-project");
    
    Path path2 = Paths.get("d:\\data\\projects\\a-project", "..\\another-project");
    

    Java NIOには相対パスを処理する方法がたくさんあります.少しは見えます.
    Path.normalize() Pathインターフェースのnormalize()方法は、1つのパスを標準化することができる.標準化は、パスのすべての「.」を削除することを意味します.および対応するパスに解析します.次の例があります.
    String originalPath = "d:\\data\\projects\\a-project\\..\\another-project";
    
    Path path1 = Paths.get(originalPath);
    System.out.println("path1 = " + path1);
    
    Path path2 = path1.normalize();
    System.out.println("path2 = " + path2);
    

    この例では、まず「.」を含むのパス文字列を作成し、このパス文字列に基づいてPathインスタンスを作成し、このインスタンスを印刷します(実際にはPath.toString()が印刷されます).
    次に、例は、作成されたPathインスタンスのnormalize()メソッドを呼び出し、新しいPathインスタンスを返した.そしてこの新しい、標準化されたPath例も印刷された.
    これは、上記の例で印刷された結果です.
    path1 = d:\data\projects\a-project\..\another-project
    path2 = d:\data\projects\another-project
    

    ご覧のように、標準化されたパスにはa-projectが含まれていません.これは余計だからです.削除された部分は、最終パスには何の影響もありません.
    このシリーズの文章を読んでいる人がいるようですが、説明する必要があります.このJava NIOシリーズはjenkovに由来しています.com、本文はただ翻訳して、みんながくれぐれも誤解しないでくださいを望んで、本文はオリジナルではありません.原文アドレス:Java NIO.