我有一个在.NET中被gzip压缩的Base64字符串,我想将它转换回Java中的字符串.我正在寻找C#语法的一些Java等价物,特别是:

> Convert.FromBase64String

> MemoryStream

> GZipStream

这是我要转换的方法:

public static string Decompress(string zipText) {

byte[] gzipBuff = Convert.FromBase64String(zipText);

using (MemoryStream memstream = new MemoryStream())

{

int msgLength = BitConverter.ToInt32(gzipBuff, 0);

memstream.Write(gzipBuff, 4, gzipBuff.Length - 4);

byte[] buffer = new byte[msgLength];

memstream.Position = 0;

using (GZipStream gzip = new GZipStream(memstream, CompressionMode.Decompress))

{

gzip.Read(buffer, 0, buffer.Length);

}

return Encoding.UTF8.GetString(buffer);

}

}

任何指针都表示赞赏.

解决方法:

对于Base64,您拥有Apache Commons的Base64 class和带有String并返回byte []的decodeBase64方法.

然后,您可以将生成的byte []读入ByteArrayInputStream.最后,将ByteArrayInputStream传递给GZipInputStream并读取未压缩的字节.

代码看起来像这样的东西:

public static String Decompress(String zipText) throws IOException {

byte[] gzipBuff = Base64.decodeBase64(zipText);

ByteArrayInputStream memstream = new ByteArrayInputStream(gzipBuff);

GZIPInputStream gzin = new GZIPInputStream(memstream);

final int buffSize = 8192;

byte[] tempBuffer = new byte[buffSize ];

ByteArrayOutputStream baos = new ByteArrayOutputStream();

while ((size = gzin.read(tempBuffer, 0, buffSize)) != -1) {

baos.write(tempBuffer, 0, size);

}

byte[] buffer = baos.toByteArray();

baos.close();

return new String(buffer, "UTF-8");

}

我没有测试代码,但我认为它应该可以工作,也许只需要一些修改.

标签:c,java,memorystream,gzipstream,gzipinputstream

来源: https://codeday.me/bug/20190622/1259920.html

java memorystream 包_C#到Java:Base64String,MemoryStream,GZipStream相关推荐

  1. c 调用java post方法_C#调用Java方法(详细实例)

    C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用 ...

  2. mongodb的java驱动包_mongodb的java驱动包

    java 中的 JDBC 纯驱动方式连接 Oracle 数据库一.下载数据库厂商提供的驱动程序包 二.将驱动程序包引入工程中,步骤如下 1.选中项目--单击右键--Build ...... 4种类型的 ...

  3. java高频面试_C ++或Java,高频交易哪个更快?

    java高频面试 总览 关于什么是高频交易的最佳解决方案,存在不同意见. 问题的一部分是高频交易的变化超出您的预期,另一部分是更快的含义. 我的看法 如果您有一个典型的Java程序员和一个典型的C + ...

  4. java memorystream 包_C#字符串string 、byte[]、MemoryStream、Base64String的相互转换

    1.字符串转比特数组 (1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串"); (2)byte[] bt=Convert ...

  5. java memorystream 包_C#使用MemoryStream类读写内存

    和FileStream一样,MemoryStream和BufferedStream都派生自基类Stream,因此它们有很多共同的属性和方法,但是每一个类都有自己独特的用法.这两个类都是实现对内存进行数 ...

  6. c 调用java包_C#调用java代码(IKVMC)

    参考资料:https://blog.csdn.net/threadroc/article/details/51406587 参考1:http://www.cnblogs.com/Jack-Blog/p ...

  7. java protobuffer 网络_C#与Java通过protobuf进行网络通信过程中遇到的问题

    上周体验了一把protobuf,google大佬搞的东西据说很多人用,优点自然不用多说,随便搜搜结果一大堆.为了测试这个玩意,随便弄了一个客户端,拿C#写了一个简单的控制台程序请求服务端,服务端拿ja ...

  8. java 程序包jar_把Java程序打包成jar文件包并执行

    把Java程序打包成jar文件包并执行 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: ...

  9. csharp与java的区别_C#与JAVA之比较(1)

    C#.Java之比较 很多人说C#是微软用来和Java抗衡的武器,因为二者在很大程度上有着惊人的相似 ,尽管如此,两者不同的地方也很多,所谓"于细微处见差异".那么两者的相似和区 ...

最新文章

  1. [导入]C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式.zip(8.75 MB)...
  2. 客户端与服务端的TCP通信实现(Qt)
  3. HDU2546_用01背包做
  4. jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数
  5. 使用Office 365 试用账户 体验Office 365功能
  6. Layui--颜色选择器layui.colorpicker
  7. 如何站在双11的肩膀上 详解阿里云企业级互联网架构
  8. win7误删计算机,Win7系统下文件数据被误删了怎么办
  9. 软件工程第0次作业 | 热身
  10. 并行开发 5.同步机制(下)
  11. 感知机(Perceptron)为什么不能表示异或(XOR)
  12. Redis 锁的实现方案
  13. 数据科学 IPython 笔记本 8.16 地理数据和 Basemap
  14. JVM学习--垃圾回收机制
  15. AID Learning设置aidcode的启动页面
  16. Apple Silicon M1 MacBook Air上手详细评测M1的强大!
  17. Phab2 Pro体验 Tango技术简介
  18. dede后台-系统基本参数无法保存中文/显示空白
  19. python 计算器 loop_python计算器实现 Yeah
  20. 面积与弦长_Simplelife_新浪博客

热门文章

  1. 一个好用的 JSON 编辑器 JsonEditor V1.03.2
  2. 《自动化学报》踩坑心得
  3. Twincat 3 初识
  4. java11的新特性
  5. Kubernetes更优雅的监控工具Prometheus Operator
  6. android studio 使用第三方模拟器连接方法,如MUMU模拟器
  7. HTML+CSS+JAVASCRIPT简介
  8. 计算机网络的形成和发展
  9. tf data 切换数据集 使用并行提高效率
  10. 1969年美国(阿波罗)登月真伪