JavaでのPathクラスの使い方とは?Pathクラスを正しく使いこなそう!

- システム
エンジニア - JavaでのPathクラスはどのように構成されるのでしょうか。
- プロジェクト
マネージャー - Pathは、ディレクトリの区切り文字(/や)で区切られた要素で構成されます。
JavaでのPathクラスの使い方を紹介します!
今回は、JavaでのPathクラスの使い方について説明します。
Pathは、ディレクトリの区切り文字(/や\)で区切られた要素で構成されます。
ここでは、Pathオブジェクトの生成、Pathの連結、ファイル名などの取得、Pathの比較、Pathの判定、要素の分解、サブPathの取得について紹介します。
JavaでのPathクラスの使い方に興味のある方はぜひご覧ください。
Pathオブジェクトの生成
Pathオブジェクトの生成方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.nio.file.FileSystems;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws Exception {
// ディレクトリ指定
Path path1 = FileSystems.getDefault().getPath(""/path/to"");
// ファイル指定
Path path2 = FileSystems.getDefault().getPath(""/path/to/file.txt"");
// 複数の引数指定
Path path3 = FileSystems.getDefault().getPath(""/path/to"", ""file.txt"");
Path path4 = FileSystems.getDefault().getPath(""/path"", ""to"", ""file.txt"");
System.out.println(path1.toString());
System.out.println(path2.toString());
System.out.println(path3.toString());
System.out.println(path4.toString());
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
/path/to
/path/to/file.txt
/path/to/file.txt
/path/to/file.txt
|
このようにJavaのPathオブジェクトを生成します。
Pathの連結
Pathオブジェクトの連結方法を紹介します。resolveメソッドやresolveSiblingを使用します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// Pathオブジェクトの生成
Path path1 = FileSystems.getDefault().getPath(""/path/to"");
// Pathの連結
Path path2 = path1.resolve(""sub_dir/file1.txt"");
// 親ディレクトリに対してPathの連結
Path path3 = path2.resolveSibling(""file2.txt"");
System.out.println(path1.toString());
System.out.println(path2.toString());
System.out.println(path3.toString());
|
実行結果は以下のようになります。
1
2
3
|
/path/to
/path/to/sub_dir/file1.txt
/path/to/sub_dir/file2.txt
|
このように、JavaではPathオブジェクトを連結できます。
ファイル名などの取得
Javaでは、Pathオブジェクトから各種情報を取得できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// Pathオブジェクトの生成
Path path = FileSystems.getDefault().getPath(""/path/to/file.txt"");
// ファイル名を取得
System.out.println(path.getFileName()); // file.txt
// 親フォルダを取得
System.out.println(path.getParent()); // /path/to
System.out.println(path.getParent().getParent()); // /path
// パスの要素数を取得
System.out.println(path.getNameCount()); // 3
// ルートディレクトリを取得
System.out.println(path.getRoot()); // /
|
実行結果は以下のようになります。
1
2
3
4
5
|
file.txt
/path/to
/path
3
/
|
このように、JavaではPathオブジェクトから各種情報を取得できます。
Pathの比較
Javaでは、compareToメソッドでPathオブジェクトを比較できます。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
|
// Pathオブジェクトの生成
Path path1 = FileSystems.getDefault().getPath(""/path/to/file1.txt"");
Path path2 = FileSystems.getDefault().getPath(""/path/to/file1.txt"");
Path path3 = FileSystems.getDefault().getPath(""/path/to/file2.txt"");
// Pathの比較
System.out.println(path1.compareTo(path2)); // 0
System.out.println(path2.compareTo(path3)); // -1
System.out.println(path3.compareTo(path1)); // 1
|
実行結果は以下のようになります。
1
2
3
|
0
-1
1
|
辞書的に先に登場する場合は-1、後に登場する場合は1、同じ場合は0を返却します。
Pathの判定
Pathオブジェクトの判定方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// Pathオブジェクトの生成
Path path1 = FileSystems.getDefault().getPath(""/path/to/file.txt"");
Path path2 = FileSystems.getDefault().getPath(""path/to/file.txt"");
// Pathの判定(指定Pathで始まっているか)
System.out.println(path1.startsWith(""/path"")); // true
System.out.println(path2.startsWith(""/path"")); // false
// Pathの判定(指定Pathで終わっているか)
System.out.println(path1.endsWith(""file.txt"")); // true
System.out.println(path2.endsWith(""/to"")); // false
// Pathの判定(絶対パスであるか)
System.out.println(path1.isAbsolute()); // true
System.out.println(path2.isAbsolute()); // false
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
true
false
true
false
true
false
|
このように、JavaではPathオブジェクトの判定ができます。
要素の分解
Pathオブジェクトの要素分解方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
|
// Pathオブジェクトの生成
Path path = FileSystems.getDefault().getPath(""/path/to/file.txt"");
// 要素数分のループ
for(int i=0; i<path.getNameCount(); i++) {
// 要素の取得
System.out.println(path.getName(i));
}
|
実行結果は以下のようになります。
1
2
3
|
path
to
file.txt
|
サブPathの取得
PathオブジェクトからサブPathを取得する方法を紹介します。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
|
// Pathオブジェクトの生成
Path path = FileSystems.getDefault().getPath(""/path/to/file.txt"");
int nameCount = path.getNameCount();
for(int i=0; i<nameCount; i++) {
// サブPathの取得
System.out.println(path.subpath(i, nameCount));
}
|
実行結果は以下のようになります。
1
2
3
|
path/to/file.txt
to/file.txt
file.txt
|
このように、JavaではPathオブジェクトからサブPathを取得できます。
- システム
エンジニア - JavaでのPathクラスの使い方について、よく理解できました。
- プロジェクト
マネージャー - Pathオブジェクトの生成、Pathの連結などの使い方を理解して、実際にソースコードで指定してみましょう。
まとめ
いかがでしたでしょうか。JavaでのPathクラスの使い方について説明しました。
ここでは、Pathオブジェクトの生成、Pathの連結、ファイル名などの取得、Pathの比較、Pathの判定、要素の分解、サブPathの取得について紹介しました。
ぜひご自身でソースコードを書いて、理解を深めてください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)