在下面的代码中将GZIPOutputStream改为ZipOutputStream,请高手之招!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.GZIPOutputStream;/**
 *
 * @author zhappy
 */
public class FileServer{
    int port=2345; //端口号
    ServerSocket serverSocket; //服务器套接字
    
    public  FileServer(){
        try{
            serverSocket=new ServerSocket(port); //实例化套接字
            System.out.println("start server at port "+port); //在命令窗口输出提示信息
            
            while (true){
                Socket client=serverSocket.accept();  //等待连接
                System.out.println("Connect: "+client.getInetAddress());  //输出客户机地址
                System.out.println("Connect: "+client.getPort());
                DataOutputStream out=new DataOutputStream(client.getOutputStream()); //得到输出流
                GZIPOutputStream gout=new GZIPOutputStream(out); //压缩输出流
                FileInputStream fileIn=new FileInputStream("D:\\SQLMonitor.rar");  //待传送的文件
                
                byte[] buffer=new byte[1024]; //缓冲区大小
                int length;
                while ((length=fileIn.read(buffer))!=-1){  //读取数据
                    gout.write(buffer,0,length);  //写入数据到文件
                }
                gout.close(); //关闭输出流
                fileIn.close();
                client.close(); //关闭端口
                System.out.println("Send Success.");
            }
        } catch (IOException ex){
            ex.printStackTrace(); //输出错误信息
        }
    }
    
    public static void main(String[] args){
        new FileServer();
    }
}

解决方案 »

  1.   

    直接把GZIPOutputStream
    替换成ZipOutputStream
      

  2.   

    你传的文件也要相应改成zip文件才行吧。不能单单把GZIPOutputStream替换成ZipOutputStream。
      

  3.   

    没使用过Socket,下面是压缩成zip的代码,希望对你有帮助
    long maxlen; 
    FileOutputStream fout=new FileOutputStream("aaa.zip");//压缩后的文件名
    ZipOutputStream zout=new ZipOutputStream(fout);
    zout.setMethod(ZipOutputStream.DEFLATED); 
    File f=new File("aaa.txt");();//待压缩文件
    maxlen=f.length();
    byte[] zipbyte;
    zout.putNextEntry(new ZipEntry(f.getName()));     
    zout.write(zipbyte,0,(int)maxlen);