java和C#的压缩和解压缩

本文探讨了在C#中进行压缩并在Java中解压缩,或反之的操作。关键点包括使用Base64编码以方便跨平台传输,统一采用UTF-8编码确保兼容性。虽然Java和C#的实现细节略有不同,但基本思路一致。Java需要注意Stream的及时关闭,而C#的using语句提供了便利。此外,文章还展示了如何在Java中创建WebService并在C#中调用的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目需求,需要在C#中压缩,然后在java里解压缩,或者倒过来,在Java里压缩,C#里解压缩,以下代码经测试验证通过。

关键技术点和体会:

  1. 压缩的结果采用Base64编码,方便在Java端或者C#端打印出来调试,也方便在不同的应用间传输(如webservice),缺点是比转码前体积变大了约35%
  2. 字符串采用UTF-8编码获得byte数组,保证两端通用,如果应用对编码有要求,两端同时改为其他编码方式也可以
  3. 从Java和C#的代码看,两者代码上有细微差别,但是思路方面两者基本是一样的
  4. 另外一个备忘,Java里边,Stream类要及时close,不然输出的结果是不完整的,即使调用了flush
  5. C#的using真好用,Java的类似语言特性在1.7才支持...

Java,用Session Bean建立了一个简单的WebService,提供一个简单的调用SayHello,然后C#里建立一个winform应用,添加服务引用,引用Java的webservice WSDL。

具体过程不多说,代码如下:

Java代码:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

@Stateless
@WebService
public class TestWebService {

	@WebMethod
	p
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值