You can use Sesame's QueryResultIO utility for this. Simplest way is to just let it parse the stream into a query result object. Like so:
InputStream in = ...;
TupleQueryResult result = QueryResultIO.parse(in, TupleQueryResultFormat.SPARQL);
The above is hardwired to create a result object. If you want more control over the processing, you can create a TupleQueryResultParser object and assign it your own TupleQueryResultHandler implementation. Something like this:
TupleQueryResultParser parser = QueryResultIO.createParser(TupleQueryResultFormat.SPARQL);
TupleQueryResultHandler handler = new MyCustomStreamingResultHandler();
parser.setQueryResultHandler(handler);
parser.parseQueryResult(in);
Or like this, if you're working with an older version of Sesame (2.6 or older):
TupleQueryResultHandler handler = new MyCustomStreamingResultHandler();
parser.setTupleQueryResultHandler(handler);
parser.parse(in);
Sesame provides several stock implementation of TupleQueryResultHandler
, but it's very straightforward to create your own as well if you wish to have full control over the parser output processing.