Нужна помощь в оптимизации вывода bufferedReader - PullRequest
1 голос
/ 13 июня 2011

Я отправляю файл в браузер в сервлете.Максимальный JDK, который я могу использовать, - это 1.4.2, и мне также нужно получить файл через URL.Я также пытаюсь использовать «guessContentTypeFromStream», но я получаю нулевое значение, которое вызывает исключение при использовании в примере кода ниже.В настоящее время мне приходится самому жестко кодировать или обрабатывать тип контента.

Я хотел бы знать, как я могу перефакторинг этого кода, чтобы передача файла была максимально быстрой, а также использовать guessContentTypeFromStream?(Примечание "res" - это 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();

1 Ответ

2 голосов
/ 13 июня 2011

Так вы обычно читаете / записываете данные.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...