ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Windows環境でも、Javaの文字列でパス区切り文字はスラッシュが使える

タイトルの通りですが、Windows環境でもJavaの文字列でパス区切り文字でスラッシュ(/)が使えることを最近知りました。

Windows環境では、パス区切り文字は「\」なのですが、それを以下のようにそのまま記載することはできません。コンパイルエラーになります。
(以下では、「\」がバックスラッシュで表示されていますが表示上の問題だけですのでスルーしてください)

File file = new File("C:\work\sample.txt");


なぜならば、Javaの文字列では「\」がエスケープ文字なので「\」自体を文字列として表したい場合は、もう一つ「\」を重ねて以下のようにする必要があります。

File file = new File("C:\\work\\sample.txt");


2個の「\」を重ねる必要がありますので、冗長だなと思っていたのですが、実はスラッシュ「/」でも問題ないようです。

File file = new File("C:/work/sample.txt");


スラッシュ(/)は、本来はUnix環境のパス区切り文字なのですが、そこらへんはいい感じに吸収してくれるようですね。

また、環境に依存しない書き方としては以下もありですね。「File.separator」は、環境毎に異なるパス区切り文字を変換してくれるものです。

File file = new File("C:" + File.separator + "work" + File.separator + "sample.txt");


環境毎に異なる部分を吸収してくれるので本来ならば良い書き方だとは思うのですが、上記の通りやや冗長なのがネックですね。

個人的には、一番シンプルなスラッシュ「/」で良い気がします。WindowsUnix環境で動作すれば基本は問題ないと思うので。