2015-01-02 7 views

答えて

22

java.io.Fileクラスには4つの静的セパレータ変数が含まれています。より理解を深めるために、いくつかのコードの助けを借りて理解しましょう。

  1. セパレータ:プラットフォームに依存するデフォルトの名前セパレータ文字列。ウィンドウの場合は '\'、unixの場合は '/'です
  2. separatorChar:セパレータと同じですが、charです。
  3. pathSeparator:パス区切りのプラットフォーム依存変数です。 「:」 例PATHかで区切られたパスのCLASSPATH変数リストについては「;」 Unixシステムとでは、Windowsシステム内
  4. pathSeparatorCharです:pathSeparatorと同じですが、それはこれらのすべては最終的なものであることを

注シャア変数とシステムに依存します。

ここに、これらのセパレータ変数を印刷するJavaプログラムがあります。 FileSeparator.java

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システム上で上記のプログラムの出力:Windowsシステム上のプログラムの

File.separator =/
File.separatorChar =/
File.pathSeparator = : 
File.pathSeparatorChar = : 

が出力:

File.separator = \ 
File.separatorChar = \ 
File.pathSeparator = ; 
File.pathSeparatorChar = ; 

我々のプログラムのプラットフォームに依存にするために、我々はすべきですこれらの区切り文字を使用してファイルパスを作成するか、PATH、CLASSPATHなどのシステム変数を読み込みます。

セパレータを正しく使用する方法を示すコードスニペットは次のとおりです。

//no platform independence, good for Unix systems 
File fileUnsafe = new File("tmp/abc.txt"); 
//platform independent and safe to use across Unix and Windows 
File fileSafe = new File("tmp"+File.separator+"abc.txt"); 
+1

pathSeparatorはSOミスリーディングです...なぜpathVariableSeparatorまたはclasspathSeparatorにしませんか? –

関連する問題