Necesita ayuda para optimizar la salida de BufferReader
-
27-10-2019 - |
Pregunta
Estoy enviando un archivo al navegador en un servlet.El JDK más alto que puedo usar es 1.4.2, y también tengo que recuperar el archivo a través de una URL.También estoy tratando de usar "guessContentTypeFromStream", pero sigo obteniendo un valor nulo, lo que genera una excepción cuando se usa en el ejemplo de código a continuación.Actualmente tengo que codificar o resolver el tipo de contenido yo mismo.
Lo que me gustaría saber es, ¿cómo puedo volver a factorizar este código para que la transmisión del archivo sea lo más rápida posible y también usar guessContentTypeFromStream?(Tenga en cuenta que "res" es HttpServletResponse).
URL servletUrl = new URL(sFileURL);
URLConnection conn = servletUrl.openConnection();
int read;
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
String sContentType =conn.guessContentTypeFromStream(conn.getInputStream());
res.setContentType(sContentType);
//res.setContentType("image/jpeg");
PrintWriter os = res.getWriter();
while((read = bis.read()) != -1){
os.write(read);
}
//Clean resources
os.flush();
Solución
Así es como normalmente lee / escribe datos.
in = new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE);
byte[] dataBuffer = new byte[1024 * 16];
int size = 0;
while ((size = in.read(dataBuffer)) != -1) {
out.write(dataBuffer, 0, size);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow