Descarga el archivo a través de HTTP con longitud desconocida con Java

Quiero descargar una consulta HTTP con java, pero el archivo que descargo tiene una longitud indeterminada al descargar.

Pensé que esto sería bastante estándar, así que busqué y encontré un fragmento de código para ello:http://snipplr.com/view/33805/

Pero tiene un problema con la variable contentLength. Como la longitud es desconocida, obtengo -1 de vuelta. Esto crea un error. Cuando omito la comprobación completa sobre contentLength, eso significa que siempre tengo que usar el búfer máximo.

Pero el problema es que el archivo aún no está listo. Por lo tanto, la descarga solo se llena parcialmente y se pierden partes del archivo.

Si intentas descargar un enlace 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 con ese fragmento, notará el error, y cuando siempre descarga el búfer máximo para omitir el error, termina con un archivo XML corrupto.

¿Hay alguna manera de descargar solo la parte lista del archivo? Me gustaría si esto pudiera descargar archivos grandes (hasta unos pocos GB).