回答:
String fileContents = new File('/path/to/file').text
文字エンコーディングを指定する必要がある場合は、代わりに次を使用します。
String fileContents = new File('/path/to/file').getText('UTF-8')
File
オブジェクトが通常のJava jarから発生した場合でも機能することを述べておきたいと思います。Groovyに属性などの独自の特別なFile
クラスがあるかどうかはtext
わかりませんでしたが、File
GroovyコードまたはJavaコードのどちらでインスタンス化されていても、オブジェクトがどこから来たかは問題ではないようです。
最短の道は確かにちょうどです
String fileContents = new File('/path/to/file').text
ただし、この場合、ファイル内のバイトを文字として解釈する方法を制御することはできません。AFAIK groovyは、ファイルの内容を見て、ここでエンコーディングを推測しようとします。
特定の文字エンコーディングが必要な場合は、次のコマンドで文字セット名を指定できます
String fileContents = new File('/path/to/file').getText('UTF-8')
詳細については、APIドキュメントをFile.getText(String)
参照してください。
someFile.text
はインテリジェントな推測を行わず、単にプラットフォームのデフォルトエンコーディングを使用します(通常、最新のLinuxではUTF-8ですが、Windows / Mac OSではWindows-1252やMacRomanのようなものですが、で上書きしない限り-Dfile.encoding=...
)
わずかなバリエーション...
new File('/path/to/file').eachLine { line ->
println line
}
私の場合new File()
は機能しませんFileNotFoundException
。Jenkinsパイプラインジョブでwhenを実行すると発生します。次のコードはこれを解決し、私の意見ではさらに簡単です:
def fileContents = readFile "path/to/file"
私はまだこの違いを完全に理解していませんが、同じ問題を抱えている他の人を助けるかもしれません。おそらく、例外が発生したのnew File()
は、グルーヴィーなコードを実行するシステム上にファイルを作成したためです。これは、読み取りたいファイルが含まれているシステムとは別のシステムでした。
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
また、ファイルが見つからない場合、エラーが発生します。
ここでは、同じことを行う他の方法を見つけることができます。
ファイルを読み取ります。
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
ファイル全体を読み取ります。
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
ファイルLine Bye Lineを読み取ります。
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
for (def i=0;i<=30;i++) // specify how many line need to read eg.. 30
{
log.info file1.readLines().get(i)
}
新しいファイルを作成します。
new File("C:\Temp\FileName.txt").createNewFile();
def
タイプを指定するときに必要かどうかはわかりません。