JavaNIO-パス

名前が示すように、パスはファイルやファイルシステム内のディレクトリなどのエンティティの特定の場所であり、その特定の場所で検索してアクセスできます。

技術的にはJavaに関して、PathはJavaバージョン7の間にJava NIOファイルパッケージで導入されたインターフェイスであり、特定のファイルシステム内の場所を表します。パスインターフェイスはJava NIOパッケージであるため、修飾名はjavaになります。 .nio.file.Path。

一般に、エンティティのパスには2つのタイプがあります。1つは絶対パスで、もう1つは相対パスです。両方のパスの名前が示すように、絶対パスはルートからそれが配置されているエンティティまでのロケーションアドレスであり、相対パスはロケーションアドレスです。これは他のパスに関連しています。パスは、Windowsの場合は「\」、UNIXオペレーティングシステムの場合は「/」として定義に区切り文字を使用します。

Pathのインスタンスを取得するために、java.nio.file.Pathsクラスの静的メソッドを使用できます。 get()このメソッドは、パス文字列、またはパス文字列を形成して結合された文字列のシーケンスをPathインスタンスに変換します。このメソッドは、渡された引数に不正な文字が含まれている場合にも、ランタイムInvalidPathExceptionをスローします。

上記のように、絶対パスはルート要素とファイルを見つけるために必要な完全なディレクトリリストを渡すことによって取得されますが、相対パスはベースパスと相対パスを組み合わせることによって取得できますが、両方のパスの取得は次の例で示されます

package com.java.nio;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.file.FileSystem;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
public class PathDemo {
   public static void main(String[] args) throws IOException {
      Path relative = Paths.get("file2.txt");
      System.out.println("Relative path: " + relative);
      Path absolute = relative.toAbsolutePath();
      System.out.println("Absolute path: " + absolute);
   }
}

これまでのところ、パスインターフェイスとは何か、なぜそれが必要なのか、どのようにアクセスできるのかがわかっています。これで、パスインターフェイスが提供する重要なメソッドは何かがわかります。

パスインターフェイスの重要なメソッド

  • getFileName() −このオブジェクトを作成したファイルシステムを返します。

  • getName() −このパスのname要素をPathオブジェクトとして返します。

  • getNameCount() −パス内の名前要素の数を返します。

  • subpath() −このパスの名前要素のサブシーケンスである相対パスを返します。

  • getParent() −親パスを返します。このパスに親がない場合はnullを返します。

  • getRoot() −このパスのルートコンポーネントをPathオブジェクトとして返します。このパスにルートコンポーネントがない場合は、nullを返します。

  • toAbsolutePath() −このパスの絶対パスを表すPathオブジェクトを返します。

  • toRealPath() −既存のファイルの実際のパスを返します。

  • toFile() −このパスを表すFileオブジェクトを返します。

  • normalize() −冗長な名前要素が削除されたこのパスであるパスを返します。

  • compareTo(Path other) − 2つの抽象パスを辞書式に比較します。このメソッドは、引数がこのパスと等しい場合はゼロを返し、このパスが辞書式に引数よりも小さい場合はゼロ未満の値を返し、このパスが辞書式に引数よりも大きい場合はゼロより大きい値を返します。 。

  • endsWith(Path other) −このパスが指定されたパスで終了するかどうかをテストします。指定されたパスにN個の要素があり、ルートコンポーネントがなく、このパスにN個以上の要素がある場合、このパスは、各パスの最後のN個の要素が指定されたパスで終了します。ルートから最も遠い要素から開始して、等しい。

  • endsWith(String other) −このパスが、endsWith(Path)メソッドで指定された方法で、指定されたパス文字列を変換することによって構築されたPathで終了するかどうかをテストします。

次の例は、上記のパスインターフェイスのさまざまな方法を示しています。

package com.java.nio;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.file.FileSystem;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
public class PathDemo {
   public static void main(String[] args) throws IOException {
      Path path = Paths.get("D:/workspace/ContentW/Saurav_CV.docx");
      FileSystem fs =  path.getFileSystem();
      System.out.println(fs.toString());
      System.out.println(path.isAbsolute());
      System.out.println(path.getFileName());
      System.out.println(path.toAbsolutePath().toString());
      System.out.println(path.getRoot());
      System.out.println(path.getParent());
      System.out.println(path.getNameCount());
      System.out.println(path.getName(0));
      System.out.println(path.subpath(0, 2));
      System.out.println(path.toString());
      System.out.println(path.getNameCount());
      Path realPath = path.toRealPath(LinkOption.NOFOLLOW_LINKS);
      System.out.println(realPath.toString());
      String originalPath = "d:\\data\\projects\\a-project\\..\\another-project";
      Path path1 = Paths.get(originalPath);
      Path path2 = path1.normalize();
      System.out.println("path2 = " + path2);
   }
}