Ich weiß, dass ein InputStream
geschlossen sein sollte. Aber ich habe Zweifel, wo und wie ich das mache.EingabeStream ohne einen try/catch-Block schließen?
Gemäß der Dokumentation auf IOUtils.closeQuietly:
Unconditionally einen Inputstream schließen. Entspricht InputStream.close(), außer Ausnahmen werden ignoriert. Dies ist typischerweise in Endblöcke.
Ich brauche keinen try/catch
Block in meinem Code, so habe ich keinen finally
Block. Ist es in Ordnung, den InputStream vor der Rückgabe in meiner Methode zu schließen, oder sollte ich etwas anderes tun? Diese Methode wird von mehreren Diensten verwendet, um eine InputStream
aus einer Datei zu laden.
public InputStream read(String filename) {
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
if (inputStream == null) {
// Throw some exception
}
IOUtils.closeQuietly(inputStream);
return inputStream;
}
bei Ihrer Methode der Suche Handhabung, es sollte nicht derjenige sein, der 'InputStream' zu schließen. Lassen Sie den Anrufer es angemessen schließen. – Tunaki
Warum geben Sie den 'InputStream' zurück und nicht den Inhalt der Datei? – ndrone
@ndrone Da gibt es andere Logik, die die Datei als 'InputStream' benötigt. Aber das ist für die Frage imo nicht relevant. – Diyarbakir