2011-12-29 5 views
13

明らかな問題はありませんが、ではなく、File.separatorを使用してビルドファイルを書き込んでも構いません。 File.separatorを使用すると、いくつかのパスを読み取ることが非常に困難になります。例:私の(Gradle)ビルドファイルでFile.separatorの代わりにスラッシュを使用しても構いませんか?

dependsDir = "${buildDir}${File.separator}depends" 

dependsDir = "${buildDir}/depends" 

答えて

20

対スラッシュ(/)は、(LinuxおよびMac OSXを含む)のUnixと同様に、Windows上の法的path separatorです。したがって、他のオペレーティングシステムでビルドを実行する必要がない場合は、問題ではありません。 separatorCharですが、システムに依存するデフォルトの名前区切り文字です

1
FILEクラスの

public static final String separator = "" + separatorChar; 

。このフィールドは、システム のプロパティfile.separatorの値の最初の文字を含むように初期化された です。 UNIXシステムでは、この フィールドの値は'/'です。 Microsoft Windowsシステムでは'\'です。
とseparatorCharですがFile.separatorを使用しながら、セパレータは、変更されるオペレーティング・システムに基づいて、あなたのために

static private FileSystem fs = FileSystem.getFileSystem(); 
public static final char separatorChar = fs.getSeparator(); 

から作成しました。
コードで/を使用すると、他のOSではサポートされません。

3

ほとんどの場合、Gradleはすべてのパスに関連する操作を行うためにjava.io.Fileに依存し、WindowsとLinuxの両方で正常に/を処理します。したがって、Gradle APIで/を使用することは問題を引き起こす可能性は低いです。

私はWindowsとLinuxの両方で動作するかなり大きなプロジェクトで/を使用しています。これまでのところ、1つの問題はありませんでした。お役に立てれば。

関連する問題