Der einfachste Weg besteht wahrscheinlich darin, ihn in eine andere OutputStream
-Implementierung einzufügen, die alle Schreibanforderungen weiterleitet, aber einen internen Zähler beibehält. Dann schreibst du stattdessen einfach dazu. Sollte nicht zu schwer zu implementieren sein - und in der Tat könnte es schon einen geben.
BEARBEITEN: Bei einem vernünftigen Namen ( BEARBEITEN: Wie bereits an anderer Stelle erwähnt, wenn dies für HTTP ist und Ihr Client nicht bereits die vollständigen Daten puffert (in diesem Fall hätte ich gedacht, dass es die Inhaltslänge berechnen könnte) ), haben Sie möglicherweise Probleme, weil Sie die Länge schreiben müssen, bevor die Daten geschrieben werden. In einigen Fällen können Sie feststellen, dass es bis zu einer bestimmten Größe funktioniert (die der Client puffert) und dann fehlschlägt. In diesem Fall werden Davids Lösungen angemessen sein. CountingOutputStream
) wurde eine Implementierung in Apache Commons IO .
Das Problem besteht darin, dass Sie die Inhaltslänge im Antwortheader festlegen müssen, bevor Sie mit dem Schreiben von Daten in den Ausgabestream beginnen. Ihre Optionen sind also:
Tags und Links java response outputstream