私はファイルシステムからファイルを読み、groovyコントローラの文字列に内容全体をロードする必要があります、それをする最も簡単な方法は何ですか?
String fileContents = new File('/path/to/file').text
文字エンコードを指定する必要がある場合は、代わりに以下を使用してください。
String fileContents = new File('/path/to/file').getText('UTF-8')
最短の方法は確かにちょうど
String fileContents = new File('/path/to/file').text
しかし、この場合、ファイル内のバイトが文字としてどのように解釈されるのかを制御することはできません。私の知る限りでは、ファイルの内容を見てエンコーディングを推測しています。
特定の文字エンコーディングが必要な場合は、次のようにして文字セット名を指定できます。
String fileContents = new File('/path/to/file').getText('UTF-8')
詳しくは File.getText(String)
のAPIドキュメントをご覧ください。
ちょっとしたバリエーション...
new File('/path/to/file').eachLine { line ->
println line
}
私の場合はnew File()
が機能しないので、Jenkinsパイプラインジョブで実行するとFileNotFoundException
が発生します。次のコードはこれを解決しました、そして私の意見ではもっと簡単です:
def fileContents = readFile "path/to/file"
私はまだこの違いを完全には理解していませんが、多分それは同じ問題を抱えている誰かを助けるでしょう。おそらく、new File()
がgroovyコードを実行するファイルをシステム上に作成したために例外が発生したのです。
ここで他の方法で同じことを見つけることができます。
ファイルを読み込みます。
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();