java.io.Fileクラスには4つの静的セパレータ変数が含まれています。ここでは、それらについて学び、いつ使用するかを学びます。
- File.separator:プラットフォーム依存のデフォルトの名前セパレータ文字列です。Windowsでは「\」、Unixでは「/」です。
- File.separatorChar:separatorと同じですが、charです。
- File.pathSeparator:パスセパレータ用のプラットフォーム依存の変数です。たとえば、Unixシステムでは「:」で区切られたPATHまたはCLASSPATH変数リストであり、Windowsシステムでは「;」で区切られたパスのリストです。
- File.pathSeparatorChar:pathSeparatorと同じですが、charです。
Javaファイルセパレータ
これらはすべて最終変数であり、システム依存です。 こちらは、これらのセパレータ変数を表示するJavaプログラムです。
package com.journaldev.files;
import java.io.File;
public class FileSeparator {
public static void main(String[] args) {
System.out.println("File.separator = "+File.separator);
System.out.println("File.separatorChar = "+File.separatorChar);
System.out.println("File.pathSeparator = "+File.pathSeparator);
System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
}
}
上記のプログラムのUnixシステムでの出力:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Windowsシステムでのプログラムの出力:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
プログラムをプラットフォームに依存しないようにするには、これらのセパレータを常に使用してファイルパスを作成したり、PATHやCLASSPATHのようなシステム変数を読み取ったりする必要があります。セパレータを正しく使用する方法を示すコードスニペットが以下になります。
//プラットフォームの独立性はありませんが、Unixシステムに適しています
File fileUnsafe = new File("tmp/abc.txt");
//プラットフォームに依存せず、UnixおよびWindowsで安全に使用できます
File fileSafe = new File("tmp"+File.separator+"abc.txt");
これでファイルセパレータに関するすべてです。将来の投稿では、Java IOについてさらに詳しく学びます。