java ZipOutputStream问题

问题描述

| 我正在尝试编写如下的Java ZIP util类:
package fdbank.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * 解压缩工具类
 * @author ggfan@amarsoft
 *
 */
public class ZIPUtil {

    private static void zip(File[] files,String dest) throws IOException{
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(\"dest\")));
        for(File file : files){
            zip(file,zos);
        }
        zos.close();
    }

    private static void zip(File file,ZipOutputStream zos) throws IOException{
        byte[] buf = new byte[2048];
        @SuppressWarnings(\"unused\")
        int bytes = 0;
        if(file.isDirectory()){
            ZipEntry entry = new ZipEntry(file.getName());
            zos.putNextEntry(entry);
            for(File subFile : file.listFiles()){
                zip(subFile,zos);
            }
            zos.closeEntry();
        }
        FileInputStream fis = new FileInputStream(file);
        System.out.println(file.getName());
        ZipEntry entry = new ZipEntry(file.getName());
        zos.putNextEntry(entry);
        while((bytes = fis.read(buf)) != -1){
            zos.write(buf);
        }
        zos.closeEntry();
        fis.close();
    }



    public static void compress(int archiveType,File[] files,String dest){

    }

    public static void main(String[] args){
        try {
            System.out.println(\"gan !!!!\");
            zip(new File[]{new File(\"F:\\\\ziptest\\\\1.bmp\")},\"c:\\\\ziptest.zip\");
        } catch (IOException e) {
            e.printstacktrace();
        }
    }
}
我运行它,没有错误,但根本没有创建zip文件!!! 我的代码有什么问题?     

解决方法

        您始终在写入名为“ dest”的文件,而忽略名为
dest
(值为
c:\\ziptest.zip
)的with1ѭ参数。 在第一个
zip()
方法的第一行中,将
\"dest\"
替换为
dest
。 另外:您不能忽略
fis.read()
的返回值:如果
read()
没有填充缓冲区
buf
,那么您必须告诉相应的
write()
调用:
while((bytes = fis.read(buf)) != -1){
    zos.write(buf,bytes);
}