1.Path
クラス
ディスク上のファイルを使って何かを行うプログラムを書きたい場合、それは非常に簡単です。Java には、ファイル自体とその内容の両方を操作するのに役立つクラスが多数あります。
Java の初期バージョンでは、ファイルを操作するためにFile
やなどのクラスを使用していました。FileInputStream
ただし、このFile
クラスは現在非推奨となっており、使用はお勧めできません。もちろん、コード、メソッド パラメーター、またはクラス コンストラクターでこの問題が発生する可能性もあります。
最初から、Path
クラスを使用してファイルを操作する方法を学び始めます。Path
は を置き換えたクラスですFile
。より安全で効率的です。
Path
クラス
技術的には、Path
はクラスではなく、インターフェイスです。これは、各オペレーティング システム (およびファイル システム) のクラスの子孫を書き込むことができるようにするために行われますPath
。
Windows にはファイル パスを記述するための標準が 1 つあり、Linux には別の標準があります。もちろん、世界には他にも多くのオペレーティング システムがあり、それぞれに独自の規格があります。
このため、Path
ファイルを操作するメソッドのあらゆる場所でインターフェイスが使用されますが、実際には作業はその子孫クラス、 、 、 ... を通じて行われWindowsPath
ますUnixPath
。
Path
オブジェクトの作成
Path
オブジェクト (実際には子孫クラスのオブジェクト)を作成するにはWindowsPath
、次のようなステートメントを使用する必要があります。
Path name = Path.of(path);
ここで、name
は変数の名前Path
、 はpath
ファイル (またはディレクトリ) の名前を含むファイル (またはディレクトリ) へのパスです。そしてクラスof
の静的メソッドですPath
。
プログラムが Windows 上で実行されている場合、このof()
メソッドはオブジェクトを作成するために使用されます。WindowsPath
プログラムが Linux 上で実行されている場合、UnixPath
オブジェクトが作成されます。のようなコードを使用してオブジェクトを作成することはできません。Path
new Path()
例:
コード | ノート |
---|---|
|
ファイルへのパス |
|
ディレクトリへのパス |
有効なオブジェクトが存在するためにファイル (またはディレクトリ) が存在する必要はありませんPath
。もしかしたら、単にファイルを作成したいだけかもしれません...Path
オブジェクトは、スープアップされたものに似ていますString
。ディスク上の特定のファイルに関連付けられておらず、ディスク上の特定のパスを保存しているだけです。それでおしまい。
2.Path
タイプのメソッド
インターフェースPath
には興味深いメソッドが多数あります。最も興味深いものを以下の表に示します。
方法 | 説明 |
---|---|
|
親ディレクトリを返します |
|
ディレクトリを除いたファイル名を返します |
|
パスからルート ディレクトリを返します |
|
現在のパスが絶対パスかどうかを確認します |
|
絶対パスに変換します |
|
ディレクトリ名のワイルドカードを削除します。 |
|
絶対パスと相対パスから新しい絶対パスを構築します。 |
|
2 つの絶対パスから相対パスを取得します。 |
|
現在のパスが指定されたパスで始まるかどうかを確認します |
|
現在のパスが指定されたパスで終わるかどうかを確認します |
|
/ 区切り文字として使用してパスを複数の部分に分割します。パーツの数を返します。 |
|
/ 区切り文字として使用してパスを複数の部分に分割します。インデックスに基づいてパーツを返します。 |
|
/ 区切り文字として使用してパスを複数の部分に分割します。指定された間隔に対応するサブパスを返します。 |
|
オブジェクトを非推奨オブジェクトPath に変換しますFile |
|
オブジェクトをオブジェクトPath に変換しますURI |
以下に既存の手法を簡単に説明します。
3. パスを部分に分割する
このgetParent()
メソッドは、現在のパスの親ディレクトリを指すパスを返します。このパスがディレクトリであるかファイルであるかに関係なく、次のようになります。
コード | 価値 |
---|---|
|
|
|
|
|
|
このgetFileName()
メソッドは、最後の区切り文字の後に続く単一のファイル (またはディレクトリ) 名を返します。
コード | 価値 |
---|---|
|
|
|
|
|
|
このgetRoot()
メソッドはルート ディレクトリへのパスを返します。
コード | 価値 |
---|---|
|
|
4. 絶対パスと相対パス
パスには絶対パスと相対パスの 2 種類があります。絶対パスはルートディレクトリから始まります。Windows の場合、これはフォルダーになりますc:\
。Linux の場合 -/
ディレクトリ
相対パスは、あるディレクトリに対して相対的な意味を持ちます。つまり、それは道の終わりのようなものですが、始まりはありません。相対パスを絶対パスに変換したり、その逆を行うことができます。
boolean isAbsolute()
方法
このメソッドは、現在のパスが絶対パスかどうかを確認します。
コード | 価値 |
---|---|
|
|
|
|
Path toAbsolutePath()
方法
絶対パスに変換します。必要に応じて、現在の作業ディレクトリを追加します。
コード | 価値 |
---|---|
|
|
|
|
Path normalize()
方法
パスには、ディレクトリ名の代わりに「..」を記述することができます。これは、1 つ前のディレクトリに戻ることを意味します。正規化によりこれらのことが排除されます。例:
コード | 価値 |
---|---|
|
|
|
|
Path relativize(Path other)
方法
このrelativize()
メソッドを使用すると、「パス間の差異」、つまりあるパスと別のパスの相対関係を構築できます。
コード | 価値 |
---|---|
|
|
|
|
|
IllegalArgumentException: 2 つのパスには異なる「ルート」(異なるディスク)があります。 |
Path resolve(Path other)
方法
このメソッドは、絶対パスと相対パスから新しい絶対パスを構築するのとはresolve()
逆のことを行います。relativize()
コード | 価値 |
---|---|
|
|
|
|
toFile()
方法
このメソッドは、オブジェクトFile
と同じファイル パスを格納する非推奨のオブジェクトを返しますPath
。
toURI()
方法
このメソッドはパスを標準URIに変換し、ファイルへのパスを含むオブジェクトを返します。
ファイルへのパス | ファイルへのURI |
---|---|
|
|
GO TO FULL VERSION