public <E> E read(Func<InputStream, E> func) throws ResourceException {
final InputStream in = read();
try {
return func.eval(in);
} catch (Exception e) {
throw new ResourceException(this, "Error occurred in read callback", e);
} finally {
FileHelper.safeClose(in);
}
}