2017-07-19 3 views
0

一部のGradleコードで、パスを分割せずに現在のフォルダ名を取得したいとします。しかし、私が試みたすべての試み:なぜGroovyとJavaがファイル名の代わりにドットを返すのですか?

Paths.get(".").getFileName() 
new File(".").getName() 
new File(".").name 

"名前の代わりに。名前を与える関数はありますか?フォルダをアドレス指定できる別の文字列ではありませんか?

String currentDirPath = new File(".").absolutePath 
    println currentDirPath 
    currentDirPath = currentDirPath.substring(0,currentDirPath.lastIndexOf("\\")) 
    println currentDirPath 
    String currentDir = currentDirPath.substring(currentDirPath.lastIndexOf("\\")+1) 

は、それが見られ、パス文字列が見えることとして:

C:\Users\543829657\workspace\dev.appl.ib.cbl\application\. 

だから、後に最後の部分文字列を取るために、単に間違っている私が使用している場合は、面白いです何

'\'しかし、これらの3つの関数は、実際の実際のフォルダの名前ではなく、最後の "。"!

答えて

3

GradleはJavaと同様にJVM言語であるGroovyをベースにしています。したがって、現在の作業ディレクトリを取得するには、単純に同じを使用することができますways you would use in Java。たとえば、次のコードでは、フルパスではなく作業ディレクトリの名前が表示されます(Fransの回答を確認してください)。

new File('').absoluteFile.name 

誤ってからプロジェクトをビルドするかもしれないので、ディレクトリ(project.buildDir)のGradleで、あなたは現在の作業ディレクトリから作成したり、アクセスファイルはならない、ということに言及、しかしプロジェクト(project.projectDir)から、またはビルドしてください下位ディレクトリ、例えばGradleは親ディレクトリにあるsettings.gradleのスクリプトをチェックするためです。

+0

優秀!適切な機能の組み合わせ、そして非常に便利な追加情報私は、子ディレクトリからタスクを起動し、そこから実行したいと思っていました。私はそれが仕事の方法ではないことを知らなかった。 – Gangnus

+0

そのフォルダ名私はとにかく必要です - タスクが正しいフォルダから呼び出されたことを確認するためです。もしそうでなければ、それは厄介な問題を引き起こすでしょう。私はあなたに2つの票を与えることはできません。 – Gangnus

0

は、あなたが探しているもの

new File("").absolutePath 

はありませんか?

+0

ファイルのパスを取得したい場合。私はすでに絶対パスから適切な部分文字列を切り取っている作業部分を持っています。しかし、私は唯一の方法がとても厄介だとは信じられません。 – Gangnus

0

実際に絶対パスを取得しないでください。

のGradleでは、プロジェクトのパスまたはrootProjectを取得するためにproject.projectDirを使用できる場合、そのマルチか、私は間違いなく、名前のためではありません全体のパスを探していますproject.file('yourfile')

関連する問題