问答

java – 压缩和解压缩流

 来源    2019-01-08    1  

我发现这篇关于在JAVA中实现的简单代理服务器的文章:

http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

代码只是从客户端获取一些流,然后将其发送到服务器,然后从服务器获取流并将响应发送到客户端.我想要做的是在发送之前压缩这些流,并在收到之后对其进行解压缩.

我找到了GZIPInputStream类,但我不确定如何使用它,我在互联网上找到的东西对我没有帮助.我要么不明白这么多,要么对我来说不是一个好的解决方案.

我的想法也是如此,但我不确定它是否正常:

final InputStream streamFromClient = client.getInputStream();
final OutputStream streamToClient = client.getOutputStream();
final InputStream streamFromServer = server.getInputStream();
final OutputStream streamToServer = server.getOutputStream();

InputStream gzipStream = new GZIPInputStream(streamFromClient );
try
{
        while ((bytesRead = gzipStream.read(request)) != -1)
       {
                    streamToServer.write(request, 0, bytesRead);
                    streamToServer.flush();
        }
}
catch (Exception e) {
System.out.println(e);
}

现在发送到服务器的数据应该在发送之前进行压缩(但我不确定它是否是正确的解决方案).是吗?

现在假设服务器向我发送压缩数据.
所以这个流:

final InputStream streamFromServer = server.getInputStream();

被压缩了.

我怎样才能解压缩并写入

final OutputStream streamToClient = client.getOutputStream();

谢谢你的帮助,伙计们!

阅读这些流的javadoc:http://download.oracle.com/javase/6/docs/api/java/util/zip/GZIPInputStream.htmlhttp://download.oracle.com/javase/6/docs/api/java/util/zip/GZIPOutputStream.html.

GZIPOutputStream在将它们发送到包装的输出流之前压缩您写入的字节. GZIPInputStream从包装流中读取压缩字节并返回未压缩的字节.

因此,如果要将压缩字节发送给任何人,则必须写入GZIPOutputStream.但是,当然,这只有在接收端知道它并解压缩它接收的字节时才有效.

同样,如果要读取压缩字节,则需要从GZIPInputSTream中读取它们.但是,当然,只有当发送端使用相同的算法确实压缩字节时,它才会起作用.

使用Java压缩和解压缩文件夹和文件
问答如果我的应用程序想要以动态方式使用java压缩Resultant文件(文件组),那么Java中有哪些可用选项? 当我浏览时,我已经使用了java.util.zip包,但还有其他方法可以用它来实现吗?: ...
1
java – 如何轻松地将字符串压缩和解压缩到字节数组?
问答我有一些字符串,每个字符串大约10K字符.它们有很多重复.它们是序列化的JSON对象.我想轻松地将它们压缩成字节数组,并从字节数组中解压缩它们. 我怎样才能最轻松地做到这一点?我正在寻找方法,所以我可 ...
1
在java中压缩和解压缩字符串数据
问答我正在使用以下代码来压缩和解压缩字符串数据,但是我面临的问题是,它很容易被压缩而没有错误,但解压缩方法抛出以下错误. 线程中的异常"main"java.io.IOException ...
1
c# – 使用Compression.DeflateStream压缩和解压缩流
问答我试图使用Compression.DeflateStream压缩和解压缩流.压缩似乎工作正常,因为下面的代码将我的Stream压缩到一个110字节长的数组.但是,读取解压缩的流会导致一个空字符串. c ...
1
在java中压缩和解压缩7z文件
问答我想使用java代码将文件压缩成zip,rar和7z格式.此外,我想在指定的位置解压缩这些文件. 任何人都可以告诉我如何使用7-zip在java中压缩和解压缩文件?::我用过:   sevenzipj ...
1
使用Java中的DeflaterOutputStream和InflaterInputStream压缩和解压缩String
问答我需要在文件上保存一个字符串,我正在使用DeflaterOutputStream进行压缩.当我尝试解压缩时,我无法获得原始字符串.我得到一个未清除的符号. 她是我的代码: public static ...
2
[Java 基础] 使用java.util.zip包压缩和解压缩文件
日志reference :  http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip ...
1
Java操作zip压缩和解压缩文件工具类
日志需要用到ant.jar(这里使用的是ant-1.6.5.jar) import java.io.File; import java.io.FileInputStream; import java.io ...
1
java工具类——java将一串数据按照gzip方式压缩和解压缩
日志       我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import ...
1
java zip API实现压缩和解压缩zip包
日志package zip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io ...
1
Java 的zip压缩和解压缩
日志Java 的zip压缩和解压缩 好久没有来这写东西了,今天中秋节,有个东西想拿出来分享,一来是工作中遇到的问题,一来是和csdn问候一下,下面就分享一个Java中的zip压缩技术,代码实现比较简单,代 ...
1
Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)
日志Java ZIP压缩和解压缩文件(解决中文文件名乱码问题) 学习了:http://www.tuicool.com/articles/V7BBvy  引用原文: JDK中自带的ZipOutputStre ...
1
Java ZIP压缩和解压缩文件并兼容linux
日志JDK中自带的ZipOutputStream在压缩文件时,如果文件名中有中文,则压缩后的 zip文件打开时发现中文文件名变成乱码. 解决的方法是使用apache-ant-zip.jar包(见附件)中的 ...
4
java采用zip方式实现String的压缩和解压缩CompressStringUtil类
日志CompressStringUtil类: 不多说,直接贴代码: /** * 压缩 * * @param paramString * @return */ public static final byt ...
1
[Swift]GZip字符串压缩和解压缩(Java/C#通用)
日志★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
1
Java基础--压缩和解压缩gz包
日志gz是Linux和OSX中常见的压缩文件格式,下面是用java压缩和解压缩gz包的例子 public class GZIPcompress { public static void FileCompr ...
1
Huffman 压缩和解压缩java实现
日志附上完整的代码 http://download.csdn.net/download/u010485034/7847447 Huffman编码原理这里就不说了,是.这里来讲讲利用Huffman编码来进行 ...
1
android – 如何压缩和解压缩文件?
问答如何压缩和解压缩已经在DDMS中的文件:data / data / mypackage / files /我需要一个简单的例子.我已经搜索相关的zip和解压缩.但是,没有一个例子可供我使用.任何人都可 ...
1
在C#中压缩和解压缩文件夹
问答我想使用C#压缩和解压缩文件夹. GZipStream的问题在于它需要文件名,因此我需要编写一个递归逻辑. 我可以以某种方式这样做,给源文件夹名称和目标文件名压缩具有层次结构的完整文件夹.我还需要反过 ...
1