のファイルリソース私はグルーヴィーでAutoClosable InputStreamを実装しようとしていますが、以下のスニペットの構文を認識することができない、私はので、代わりに私がnew File(relativePath).getText()
を使用し、私の古いプロジェクトのJavaクラスからAutoclosable、Groovyの
try (InputStream istream = new FileInputStream(new File(relativePath))) {
return IOUtils.toString(istream));
} catch (IOException e) {
e.printStackTrace();
}
を取っていますうまくいく。
def static getTemplateAsString(def relativePath) {
/*try (InputStream istream = new FileInputStream(new File(relativePath))) {
return IOUtils.toString(istream));
} catch (IOException e) {
e.printStackTrace();
}*/
try {
return new File(relativePath).getText()
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace()
} catch (IOException ioe) {
ioe.printStackTrace()
} catch (Exception e) {
e.printStackTrace()
}
return null
}
私は2つの質問
- を持っているが、私はそれがドキュメントだ見つけることができますAutoClosableに似
new File(relativePath).getText()
オートリリースファイルリソースを、していますか? - の構文がgroovyで動作しないのはなぜですか?
なGroovy:2.4.7、 JVM:1.8.0_111
File.getText()グルーヴィーな強化は、最終的に試して実装し、ストリームを閉じます。 File.getText()は[IOGroovyMethods]を呼び出します(http://docs.groovy-lang.org/2.4.3/html/api/org/codehaus/groovy/runtime/IOGroovyMethods.html#getText(java.io.Reader) )このメソッドは "このメソッドが戻る前に、リーダーが閉じている"と文書化します。 – JasonM1