Java-nio-path
Java NIO-パス
名前が示すように、パスは、ファイルシステム内のファイルやディレクトリなどのエンティティの特定の場所であるため、特定の場所で検索およびアクセスできます。
技術的にはJavaの観点から、PathはJavaバージョン7でJava NIOファイルパッケージに導入されたインターフェイスであり、特定のファイルシステム内の場所の表現です。パスインターフェイスはJava NIOパッケージにあるため、その修飾名はjava .nio.file.Path。
一般に、エンティティのパスには2つのタイプがあり、1つは絶対パスであり、もう1つは相対パスです。両方のパスの名前から、絶対パスはルートからエンティティが位置する場所のアドレスであることが示唆されますパスは、Windowsの場合は「\」、unixオペレーティングシステムの場合は「/」として定義で区切り文字を使用します。
Pathのインスタンスを取得するには、java.nio.file.Pathsクラスの静的メソッド* get()*を使用できます。このメソッドは、パス文字列、またはパス文字列から結合されたときに文字列のシーケンスを変換します。パスインスタンス。このメソッドは、渡された引数に無効な文字が含まれている場合、ランタイム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);
}
}
これまでのところ、なぜパスインターフェースとは何か、なぜそれが必要なのか、どのようにアクセスできるのかがわかっていましたが、今度はPathインターフェースが提供する重要なメソッドが何なのかを知ることになります。
パスインターフェイスの重要なメソッド
- * getFileName()*-このオブジェクトを作成したファイルシステムを返します。
- * getName()*-このパスの名前要素をPathオブジェクトとして返します。
- * getNameCount()*-パス内の名前要素の数を返します。
- * subpath()*-このパスの名前要素のサブシーケンスである相対パスを返します。
- * getParent()*-親パスを返します。このパスに親がない場合はnullを返します。
- * getRoot()*-このパスのルートコンポーネントをPathオブジェクトとして返します。このパスにルートコンポーネントがない場合はnullを返します。
- * toAbsolutePath()*-このパスの絶対パスを表すPathオブジェクトを返します。
- * toRealPath()*-既存のファイルの実際のパスを返します。
- * toFile()*-このパスを表すFileオブジェクトを返します。
- * normalize()*-冗長な名前要素が削除されたこのパスであるパスを返します。
- * compareTo(Path other)*-2つの抽象パスを辞書式に比較します。引数がこのパスに等しい場合、このメソッドは0を返します。このパスが辞書式に引数よりも小さい場合は0未満の値、またはpathは、引数より辞書的に大きくなっています。
- * endsWith(Path other)*-このパスが指定されたパスで終了するかどうかをテストします。指定されたパスにN個の要素があり、ルートコンポーネントがなく、このパスにN個以上の要素がある場合、このパスは指定されたパスで終了しますルートから最も遠い要素から始まる各パスの最後のN個の要素は等しい。
- * endsWith(String other)*-このパスが、endsWith(Path)メソッドで指定された方法で、指定されたパス文字列の変換によって構築された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);
}
}