我想實現在常規AutoClosable的InputStream,但它無法識別語法如下片斷,這是我從我的老項目的Java類了Autoclosable,在Groovy
try (InputStream istream = new FileInputStream(new File(relativePath))) {
return IOUtils.toString(istream));
} catch (IOException e) {
e.printStackTrace();
}
所以不是我用new File(relativePath).getText()
哪些工作。
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()
自動釋放文件資源,我在哪裏可以找到它的文檔? - 爲什麼
try (InputStream istream = new FileInputStream(new File(relativePath)))
語法在groovy中工作?
Groovy:在2.4.7, JVM:1.8.0_111
File.getText()常規增強實現一個try-finally和關閉該流。 File.getText()調用[IOGroovyMethods](http://docs.groovy-lang.org/2.4.3/html/api/org/codehaus/groovy/runtime/IOGroovyMethods.html#getText(java.io.Reader) )哪些文檔「讀者在此方法返回之前關閉」。 – JasonM1