Java 如何确保已从Servlet接收到完整的文件
我已经编写了一个Servlet程序来下载一个文件。在从服务器获得响应后,我打印响应的内容,如下所示:Java 如何确保已从Servlet接收到完整的文件,java,servlets,http-get,Java,Servlets,Http Get,我已经编写了一个Servlet程序来下载一个文件。在从服务器获得响应后,我打印响应的内容,如下所示: HttpEntity httpEntity = response.getEntity(); is = httpEntity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8
HttpEntity httpEntity = response.getEntity();
is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
Log.i("THE RESPONSE",(sb.toString()));
但是,打印的文件内容不完整。只打印部分文件。是因为服务器只向我发送了部分文件吗?如果是,那么您如何确保我获得完整的文件
这是我的servlet:
response.setContentType("text/plain");
response.setHeader("Content-Disposition","attachment;filename=downloadname.txt");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/downloadtest.txt");
int read=0;
byte[] bytes = new byte[BYTES_DOWNLOAD];
OutputStream os = response.getOutputStream();
while((read = is.read(bytes))!= -1){
os.write(bytes, 0, read);
}
os.flush();
os.close();
我是这样提出请求的:
HttpResponse response = httpClient.execute(getRequest);
要下载的文件大小为208Kb,字节_DOWNLOAD的值为1024*1024
我该如何解决这个问题?我不相信这会有什么不同,你可能不想在你的BufferedReader中使用这么小的缓冲区。还有,
Log.I
做什么?我怀疑它在格式化或记录时可能会截断如此大量的文本。