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);

浙公网安备 33010602011771号