在下面的代码中将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();
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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();
}
}
替换成ZipOutputStream
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);