DataInputStream读取大文件压缩包未读完,导致文件损坏。解决方案循环读

错误读法(小文件可以)
int filesize = Integer.parseInt(recBodyEmt.element("filesize").getText());
byte[] buffer = new byte[filesize];

din.read(buffer);
FileUtil.write(request.getBody().getLocalpath(),request.getBody().getFilename() , buffer);

解决方法

int filesize = Integer.parseInt(recBodyEmt.element("filesize").getText());
byte[] buffer = new byte[filesize];
int count = 0;
while(count<filesize){
int available = din.available();
if(available>buffer.length-count){
available=buffer.length-count;
}
count += din.read(buffer,count,available);
}
FileUtil.write(request.getBody().getLocalpath(),request.getBody().getFilename() , buffer);

 

posted @ 2022-04-29 13:57  一个追求未知的人  阅读(156)  评论(0)    收藏  举报