import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import net.sf.json.JSONObject;
public class ZipServer {
public static void main(String[] args) {
try {
ServerSocket ss=new ServerSocket(2356);
Socket s=ss.accept();
System.out.println("accept");
OutputStream os=s.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);
StringBuilder sb = new StringBuilder();
JSONObject job = new JSONObject();
String str = "如果子类方法覆盖了父类方法,那么只执行子类方法,但在确定执行顺序时还是把它看作父类方法" ;
for(int i = 0; i < 300; i++) {
job.put("list"+i, str);
}
//压缩job
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStream zout = new ZipOutputStream(out);
zout.putNextEntry(new ZipEntry("0"));
zout.write(job.toString().getBytes());
zout.closeEntry();
byte[] compressed = out.toByteArray();
dos.writeInt(compressed.length);
dos.write(compressed);
dos.flush();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.Socket;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import net.sf.json.JSONObject;
public class ZipClient {
public static void main(String[] args) {
try {
Socket socket=new Socket("127.0.0.1",2356);
InputStream in = socket.getInputStream();
byte[] length = new byte[4];
int lengthOff = -1;
//获取解压byte[]长度
do {
++lengthOff;
if (-1 == in.read(length, lengthOff, 1)) {
}
}while (lengthOff != 3);
int length = b2i(length);
//接收压缩文件
byte[] buff = new byte[length];
int receivedLength = 0;
while (receivedLength < length) {
int r = in.read(buff, receivedLength, length - receivedLength);
if (-1 == r) {
System.out.println("通信错误:接收内容失败");
}
receivedLength += r;
}
//解压byte[]数据
ByteArrayInputStream inS = new ByteArrayInputStream(buff);
ZipInputStream zin = new ZipInputStream(inS);
ZipEntry entry = zin.getNextEntry();
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[lengthR];
int offset = -1;
while((offset = zin.read(buffer)) != -1) {//将流写入缓存buffer,如果流过大,则将缓存buffer写入out,然后继续读流
out.write(buffer, 0, offset);
}
JSONObject jsonReceive = JSONObject.fromObject(out.toString());
for(int i = 0; i < 300; i++) {
System.out.println(jsonReceive.get("list" + i));
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static int b2i(byte[] b) {
int value = 0;
for (int i = 0; i < 4; i++) {
int shift = (4 - 1 - i) * 8;
value += (b[i] & 0x000000FF) << shift;
}
return value;
}
}
分享到:
相关推荐
这两个类广泛应用于处理字节流,比如在网络传输或者存储大量数据时,压缩数据可以有效地节省空间。接下来,我们将详细讨论如何使用Deflater和Inflater进行字节的压缩与解压。 Deflater类是Java中的压缩工具,它实现...
- 使用`System.IO.Compression.GZipStream`类创建了一个GZip解压流`GZipS`,该流的构造函数中指定了压缩模式为`CompressionMode.Decompress`。 - 定义了一个临时字节数组`tmpByte`以及一个整型变量`WriteLen`用于...
C#利用SharpZipLib进行压缩和解压 C#中的压缩和解压是非常常见的操作, SharpZipLib是一个流行的压缩库,它提供了压缩和解压的功能。在本文中,我们将使用SharpZipLib库来实现文件的压缩和解压。 SharpZipLib简介...
- `decompress(byte[] compressedData)`:解压缩数据,恢复原始文本。 三、文件处理 在实际应用中,压缩和解压缩的数据需要以某种形式存储。可以将压缩后的二进制码流写入文件,同时保存Huffman编码表。在解压缩...
本文将深入探讨如何使用C++实现文件压缩解压接口调用,并基于提供的描述进行详细讲解。 首先,"文件解压接口已写,直接生成文件DLL、LIB文件,调用"这部分意味着已经有一个完成的解压缩模块,该模块可以生成动态...
1. **创建ZipOutputStream对象**:首先,创建一个`ZipOutputStream`实例,它会处理压缩过程,并将其写入到指定的流中,例如一个文件流。 ```csharp using (FileStream fs = new FileStream("output.zip", FileMode....
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
- 使用`FileInputStream`打开GZ文件以读取数据,然后通过`GZIPInputStream`创建一个流,该流可以解压GZ格式的数据。 - 创建一个`FileOutputStream`,准备将解压后的内容写入目标文件。 - 使用一个缓冲区`byte[] ...
在IT领域,字符串压缩与解压是数据处理和存储中常见的技术。特别是在处理大量文本信息时,为了节省存储空间和提高传输效率,我们会对字符串进行压缩。本文将深入探讨C#语言中三种实现字符串压缩与解压的方法。 1. *...
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
在Java编程语言中,GZIP是一种常用的文件压缩格式,它基于DEFLATE算法,可以用于压缩和解压缩数据。在本文中,我们将深入探讨如何使用Java实现GZIP压缩和解压缩文件的源码。 首先,我们需要引入Java的`java.util....
Zip文件压缩和解压是日常计算机操作中常见的一种文件处理方式。Zip格式是一种高效的数据存储格式,它能够将多个文件和文件夹打包成一个单一的压缩文件,从而节省磁盘空间,便于传输和备份。本篇文章将深入探讨Zip...
StreamUtils.Copy(fileStream, zip, new byte[4096]); } zip.CloseEntry(); } zip.IsStreamOwner = true; // 关闭流时同时关闭底层文件 zip.Close(); } } ``` 总的来说,C#中的文件压缩和解压缩功能丰富多样...
Java的Zip压缩和解压是Java IO和Java Archive(JAR)库中的一部分,用于处理.zip格式的文件。在Java中,我们可以使用`java.util.zip`包中的类,如`ZipOutputStream`和`ZipInputStream`来实现文件或目录的压缩与解压...
在安卓平台上,使用Java语言处理文件的压缩与解压是一项常见的任务,这涉及到对文件系统的操作以及对ZIP格式的理解。本文将深入探讨如何在Android环境中使用Java实现这一功能。 首先,我们要了解ZIP文件格式。ZIP是...
在给定的项目中,"JAVA 压缩解压AES"涉及到了Java的文件压缩和解压缩技术,以及AES加密解密的实现。通过`java.util.zip`库或Apache Commons Compress库可以实现文件夹的压缩和解压缩,而AES加密则可以通过Java ...
本主题将探讨XML文件的压缩与解压,以及如何使用编程工具进行处理。 一、XML文件概述 XML设计目的是传输和存储数据,而不是显示数据。它具有自描述性,每个元素都有开始和结束标签,使得数据结构清晰易读。例如,一...
本篇文章将详细探讨如何使用Java内置的IO流来实现文件夹的zip压缩以及zip压缩包的解压,无需依赖其他的第三方库如Apache Commons IO或JavaZip。 ### 文件夹压缩成ZIP 首先,我们需要理解如何将一个文件夹及其内容...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
根据给定文件的信息,本文将围绕“字符串的压缩与解压”这一主题展开,深入探讨字符串压缩和解压的基本原理、实现方法以及应用场景等多方面内容。 ### 字符串压缩和解压概述 字符串的压缩与解压是计算机科学中的一...