最近碰到个需求,为了提高传输速度,打算压缩、传输、解压同时进行,即服务端压缩、传输并发执行,客户端接收、解压并发进行;折腾来折腾去,倒也有些进展。下面先贴出代码,结合代码讲解。
服务端代码:
public class Hzipserver extends Thread {
//无论文件,还是文件夹都是一个ZipEntry。
/**
* 这里默认所有文件都可以读写,但在实际应用中,
* 为了程序的健壮性,必须判断文件是否可读、可写,
* 是否是隐藏文件等,在安卓里这种情形很常见。
* 例如,不可读的文件,自然也就没法传输了。
* @param file 要传送的文件夹。
* @param zos 包装后的socket的outputstream
* @param b 缓存所用。一个容器。
*/
private void zipEntry(File file,ZipOutputStream zos,byte[] b)
{
if(file.isDirectory())//如果文件是目录,就没什么需要传输的了,