写点有技术含量滴

相信各位看官还记得我问的那个困扰我很久的问题,昨天在某前辈的帮助下,当然不是你们哈的帮助下,顺利解决。在此谢谢下那个前辈。
好,废话不多说,我的流程是先上传zip包,然后解压这个上传后的zip包,但是在上传后老是说zip异常。细细查看原因原来是zip包是有问题的。
原因是什么呢,相信各位看官知道,我们上传一般写的是
private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
但是在while()的时候,会把空白填充,造成文件损坏,下面我隆重的介绍我的方法,就是所谓的有技术含量滴
private boolean copy(File src, File dst){

boolean flag = false;
InputStream in = null;
OutputStream out = null;
try{
in = new BufferedInputStream(new FileInputStream(src));
out = new BufferedOutputStream(new FileOutputStream(dst));
byte[] buffer = new byte[BUFFER_SIZE];

while(true){
int numBytes = in.read(buffer);
if(numBytes!=-1){
out.write (buffer,0,numBytes);
}else{
flag = true;
break;
}
}

/* 会把空白的地方进行填充,造成文件损坏
while (in.read(buffer) > 0) {
out.write(buffer);
}
*/

}catch(IOException e){
e.printStackTrace();
} finally
{
if ( null != in)
{
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if ( null != out)
{
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

return flag;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值