0Pricing
Java Academy · レッスン

Path:ファイル場所の表現

Path オブジェクトを作成し、パスを解決・相対化して、パスの構成要素を操作します。

「Path:ファイル場所の表現」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

Path の概要

java.nio.file.Path インターフェースは、ファイルシステム内のファイルまたはディレクトリの場所を表します。従来の java.io.File クラスに代わる、より豊富でプラットフォームに依存しない API です。

import java.nio.file.*;

Path p1 = Path.of("/home/user/documents/report.txt");
Path p2 = Paths.get("/home", "user", "documents", "report.txt");

System.out.println(p1); // /home/user/documents/report.txt
System.out.println(p1.equals(p2)); // true

Path の構成要素

パスの構成要素を取得します:

Path path = Path.of("/home/user/docs/report.txt");

System.out.println(path.getFileName()); // report.txt
System.out.println(path.getParent());   // /home/user/docs
System.out.println(path.getRoot());     // /
System.out.println(path.getNameCount()); // 4
System.out.println(path.getName(0));    // home
System.out.println(path.getName(3));    // report.txt

相対パスと絶対パス

パスには、ルートから始まる絶対パスと、現在のディレクトリを基準とする相対パスがあります。isAbsolute() で確認し、toAbsolutePath() で現在の作業ディレクトリを基準に相対パスを解決します。

Path rel = Path.of("docs/report.txt");
Path abs = Path.of("/home/user/docs/report.txt");

System.out.println(rel.isAbsolute()); // false
System.out.println(abs.isAbsolute()); // true

Path resolved = rel.toAbsolutePath(); // resolves against CWD
System.out.println(resolved);

resolve:パスの結合

resolve(other) は別のパスを追加します。other が絶対パスの場合は、現在のパス全体を置き換えます。

Path base = Path.of("/home/user");
Path docs = base.resolve("documents");
Path file = docs.resolve("report.txt");

System.out.println(file); // /home/user/documents/report.txt

// Resolving an absolute path replaces:
Path abs = base.resolve(Path.of("/etc/config"));
System.out.println(abs); // /etc/config

relativize:相対パスの計算

relativize(other) は、このパスから other までの相対パスを計算します:

Path from = Path.of("/home/user");
Path to   = Path.of("/home/user/docs/report.txt");

Path rel = from.relativize(to);
System.out.println(rel); // docs/report.txt

// Verify:
System.out.println(from.resolve(rel)); // /home/user/docs/report.txt

normalize:冗長な部分の削除

normalize() は、パスから . と .. の要素を削除します:

Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txt

startsWith と endsWith

パス間のプレフィックスまたはサフィックスの関係を確認します:

Path p = Path.of("/home/user/docs/report.txt");

System.out.println(p.startsWith("/home/user")); // true
System.out.println(p.startsWith("/home/other")); // false
System.out.println(p.endsWith("report.txt"));    // true
System.out.println(p.endsWith("docs/report.txt")); // true

File と URI への変換

必要に応じて、Path を従来の File クラスまたは URI に変換します:

Path path = Path.of("/home/user/report.txt");

java.io.File file = path.toFile();
System.out.println(file.exists()); // depends on filesystem

java.net.URI uri = path.toUri();
System.out.println(uri); // file:///home/user/report.txt

異なるプラットフォームでの Path

Path.of() はプラットフォームの区切り文字を使用します。Windows ではバックスラッシュ、Unix ではスラッシュがパスに使用されます。API がこの違いを透過的に処理します。

// Portable path construction (works on all platforms):
Path config = Path.of("config", "app", "settings.json");
// On Unix: config/app/settings.json
// On Windows: config\app\settings.json
System.out.println(config);

Path 要素の反復処理

for-each ループまたは iterator() を使用して、個々の名前要素を反復処理します:

Path path = Path.of("/home/user/docs/report.txt");

for (Path element : path) {
    System.out.println(element); // home, user, docs, report.txt
}
// Note: root ("/") is not included in iteration

subpath:一部分の抽出

subpath(begin, end) は、名前要素の範囲から相対パスを返します:

Path p = Path.of("/home/user/docs/report.txt");
// Indices: home=0, user=1, docs=2, report.txt=3

System.out.println(p.subpath(1, 3)); // user/docs
System.out.println(p.subpath(0, 2)); // home/user

クイックチェック

Path.of("/home/user").resolve("docs/file.txt") の結果は何でしょうか?

復習:Path API

重要なポイント:

  • Path.of() / Paths.get() で Path インスタンスを作成します
  • 構成要素の取得には getFileName、getParent、getRoot、getName、getNameCount を使用します
  • resolve() は追加、relativize() は相対パスの計算、normalize() は ./ と ../ の整理を行います
  • startsWith/endsWith でプレフィックスまたはサフィックスを確認します
  • プラットフォームに依存せず、区切り文字は自動的に処理されます

よくある質問

「Path:ファイル場所の表現」レッスンは無料ですか?

はい。「Path:ファイル場所の表現」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「Path:ファイル場所の表現」で何を学びますか?

Path オブジェクトを作成し、パスを解決・相対化して、パスの構成要素を操作します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Path:ファイル場所の表現」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Path:ファイル場所の表現
  2. Files ユーティリティ:読み取り、書き込み、コピー、移動
  3. Files.walk によるディレクトリツリーの走査
  4. WatchService:ファイル変更の監視
← Java Academyに戻る