Faça o download do arquivo via HTTP com tamanho desconhecido com Java

Eu quero baixar uma consulta HTTP com java, mas o arquivo que eu baixei tem uma duração indeterminada ao baixar.

Eu pensei que isso seria bastante normal, então eu procurei e encontrei um trecho de código para isso:http://snipplr.com/view/33805/

Mas tem um problema com a variável contentLength. Como o comprimento é desconhecido, recebo -1 de volta. Isso cria um erro. Quando eu omito a verificação completa sobre o contentLength, isso significa que eu sempre tenho que usar o buffer máximo.

Mas o problema é que o arquivo ainda não está pronto. Então o flush fica parcialmente preenchido e partes do arquivo se perdem.

Se você tentar baixar um link comohttp://overpass-api.de/api/interpreter?data=area%5Bname%3D%22Hoogstade%22%5D%3B%0A%28%0A++node%28area%29%3B%0A++%3C%3B % 0A% 29 +% 3B% 0Aout + meta + qt% 3B Com esse trecho, você notará o erro e, quando fizer o download do buffer máximo para omitir o erro, você acabará com um arquivo XML corrompido.

Existe alguma maneira de baixar apenas a parte pronta do arquivo? Eu gostaria que isso pudesse baixar arquivos grandes (até alguns GB).

questionAnswers(1)

yourAnswerToTheQuestion