【Java入門】ファイルパスの区切り文字(separator)の使い方(\、/)

こんにちは!フリーエンジニアのヤマシタです。

Javaではファイルを操作するにはパスの指定が必要です。

しかし、ファイルのパスは環境によって区切り文字が違うので注意が必要です。

この記事では、

・ファイルの区切り文字(separator)とは
・プラットフォームごとの区切り文字の対応
・ファイル区切り文字の問題点

という基本的な内容から、

・プラットフォームごとに適したセパレータを生成する方法
・セパレータを置換する方法

などの応用的な使い方に関しても解説していきます。

今回はファイルのセパレータについて、わかりやすく解説します!

ファイルの区切り文字(separator)とは

ファイルセパレータ(区切り文字)とは、ファイルのパス指定において、パスとファイルを区切るときに使用する「¥」「\」「/」などの文字のことを指します

このファイルの区切り文字は、WindowsやLinuxなどのプラットフォームごとに指定方法が異なります。

以下ではプラットフォームごとにパスを指定していますが、Windows、Mac/Linuxで指定方法が異なることがわかります。

そもそもファイルのパスがどのようなものかについて詳しく知りたい方はこちらの記事を確認してください。

【Java入門】ファイルパスを取得・指定する(java.io.File/java.nio.file.Files)
更新日 : 2019年6月19日

プラットフォームごとの区切り文字の対応

ファイル区切り文字の問題点

上述したようにOSごとに区切り文字が異なるため、Fileクラスを使用する場合は、OSで使用されている区切り文字を適切に扱う必要があります。

Windowsなら「¥」「\」、MacやLinuxなら「/」

そのため、Fileクラスで異なるOSのファイル区切り文字を使用した場合、処理がうまくいかず環境によっては例外が発生する可能性もあります。

このような問題を避けるためには、ファイルのパス/ファイルは文字列で行わずにFileクラスのメソッドを使用する方法が確実です。

プラットフォームごとに適したFileクラスを生成する

プラットフォームごとに適切な区切り文字を指定するためには、Fileクラスのオブジェクト生成時に、getParentFileメソッドを指定する方法があります。

以下にgetParentFileメソッドを使用したオブジェクトを生成する方法を記述します。

実行結果:

このサンプルでは、Fileクラスのfile1オブジェクトではパス/ファイル名を文字列で指定していますが、file2のオブジェクトでは、第一引数にfile1に対してgetParentFile()で親ディレクトリを取得し、第二引数でファイル名を指定しています。

getParentFileメソッドを使用すれば、使用している開発環境のセパレータを取得できますので、プラットフォームごとに正しいパスを取得できます。

区切り文字を置換する方法

文字列のパス/ファイルの区切り文字を置換するには、StringクラスのreplaceAllメソッドを使います。

replaceAllメソッドは区切り文字を一括で置換することができるので、区切り文字を指定して置換することができます。

replaceAllメソッドを使用して、区切り文字を一括で置換する方法を次のプログラムで確認してみましょう。

実行結果:

極端な例ですが、replaceAllメソッドを使用すれば区切り文字をLinux/Macの「/」からWindowsの「¥」に変換することができます。

文字列の一括置換については、以下の記事で詳しく解説しています!

JDKのインストールとパスを設定する方法

Javaのプログラミング入門者がつまずきやすいのが、JDKをインストールするときに行うパスの設定です。

環境変数などの実際のパスの設定がどのように行われるのかを知りたい方にはぜひ確認していただきたいオススメの内容です。

JDKのインストールとパスの設定についてはこちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java初心者必見!】Javaの開発環境を構築する方法を解説!
更新日 : 2019年5月7日

Fileクラスについてもっと詳しく知りたい方へ

Fileクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、ファイルパス指定持のセパレータについて、プラットフォームごとの違いや問題点、正しくセパレータを取得する方法や置換する方法などを解説しました。

JavaはマルチプラットフォームでOSに依存しないプログラミング言語ですが、OSごとの特性を理解していないと、今回のセパレータのように、思わぬ不具合が発生してしまうこともあります。

もしファイルのセパレータの指定方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説