今日はJavaファイルパスについて見ていきます。Javaファイルパスは抽象的、絶対的、または規範的になります。
Javaファイルパス
java.io.File
にはファイルパスを決定するための3つのメソッドが含まれていますが、このチュートリアルでそれらを探っていきます。
getPath()
: このファイルパスメソッドは、抽象パス名を文字列として返します。文字列パス名がFileオブジェクトの作成に使用される場合、単純にパス名引数を返します。URIが引数として使用される場合、プロトコルを削除してファイル名を返します。create FilegetAbsolutePath()
: このファイルパスメソッドは、ファイルの絶対パスを返します。Fileが絶対パス名で作成された場合、単純にパス名を返します。ファイルオブジェクトが相対パスを使用して作成された場合、絶対パス名はシステム依存の方法で解決されます。UNIXシステムでは、相対パス名は現在のユーザーディレクトリに対して解決されて絶対パスになります。Microsoft Windowsシステムでは、相対パス名は、パス名で指定されたドライブの現在のディレクトリに対して解決されます。指定されていない場合は、現在のユーザーディレクトリに対して解決されます。[getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())()
: このパスメソッドは、絶対かつ一意な正規パス名を返します。このメソッドはまず、必要に応じてこのパス名を絶対形式に変換し、getAbsolutePathメソッドを呼び出すかのように、それをシステム依存の一意な形式にマップします。これは、通常、パス名から「.」や「..」などの冗長な名前を削除し、シンボリックリンクを解決(UNIXプラットフォームで)、およびドライブレターを標準の大文字小文字に変換(Microsoft Windowsプラットフォームで)することを含みます。
Javaファイルパスの例
単純なプログラムを使用して、Javaでのファイルパスの異なるケースを見てみましょう。
package com.journaldev.files;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class JavaFilePath {
public static void main(String[] args) throws IOException, URISyntaxException {
File file = new File("/Users/pankaj/test.txt");
printPaths(file);
// 相対パス
file = new File("test.xsd");
printPaths(file);
// 複雑な相対パス
file = new File("/Users/pankaj/../pankaj/test.txt");
printPaths(file);
// URIパス
file = new File(new URI("file:///Users/pankaj/test.txt"));
printPaths(file);
}
private static void printPaths(File file) throws IOException {
System.out.println("Absolute Path: " + file.getAbsolutePath());
System.out.println("Canonical Path: " + file.getCanonicalPath());
System.out.println("Path: " + file.getPath());
}
}
以下の画像は、上記のJavaファイルパスプログラムによって生成された出力を示しています。 出力は自己説明的です。出力に基づいて、相対パスの問題を避けるために正規パスを使用するのが最適であることがわかります。また、Javaファイルパスメソッドはファイルが存在するかどうかを確認しません。それらは単に、Fileオブジェクトを作成する際に使用されたファイルのパス名で動作します。これで、Javaのさまざまな種類のファイルパスに関する説明は終わりです。
あなたは私たちのGitHubリポジトリからより多くのJava IOの例をチェックアウトできます。
Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical