`

zip-压缩,只依赖J2ME

 
阅读更多
直接上代码:
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;

/**
 * 只依赖J2ME API,目前一共有4个方法,压缩成zip包的方法还没有实现。
 * //会多出8个byte的header,以此来判断压缩算法等,可以通过下面的语句来验证:
 * System.out.println(ZipUtil.compress( "".getBytes() ).length);
 * @author river.wang
 */
public class ZipUtil {

	public static byte[] compress(byte[] data) throws Exception{
		Deflater compresser = new Deflater();
		compresser.setInput(data);
		compresser.finish();
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		byte[] buf = new byte[1024];
		while (!compresser.finished()) {
		    int i = compresser.deflate(buf);
		    //把buf写入到bos中,流的写是写入流自己,流的读是从流中读。
		    bos.write(buf, 0, i);
		}
		compresser.end();
		return bos.toByteArray();
	}

	public static byte[] decompress(byte[] data) throws Exception{
		Inflater decompresser = new Inflater();
		decompresser.setInput(data);
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		byte[] buf = new byte[1024];
		while (!decompresser.finished()) {
		    int i = decompresser.inflate(buf);
		    bos.write(buf, 0, i);
		}
		decompresser.end();
		return bos.toByteArray();
	}

	/**
	 * 压缩data,并写向os,如果os是FileOutputStream的话,并不能打成zip包,其他的没有试
	 * 只是把压缩的data写入os流,以文本的形式存在
	 */
	public static void compress(byte[] data, OutputStream os) throws Exception{
	    DeflaterOutputStream dos = new DeflaterOutputStream(os);
	    dos.write(data, 0, data.length);
	    dos.finish();
	    dos.flush();
	}
	
	public static byte[] decompress(InputStream is) throws Exception{
		InflaterInputStream iis = new InflaterInputStream(is);
		ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
		int i = 1024;
		byte[] buf = new byte[i];
		while ((i = iis.read(buf, 0, i)) > 0) {
		    bos.write(buf, 0, i);
		}
		return bos.toByteArray();
	}
}
 
分享到:
评论

相关推荐

    计算机软件-编程源码-J2ME的俄罗斯方块.zip

    在【压缩包子文件的文件名称列表】中,我们只看到"J2ME的俄罗斯方块"这一条,这可能是游戏的主代码文件夹或者包含了所有相关的源代码文件。在实际的源代码包中,通常会包括以下几个部分: 1. **项目结构**:项目...

    J2ME环境下基于ZLIB的数据压缩与解压缩.pdf

    然而,J2ME作为Java在小型设备上的简化版本,删减了大量非核心功能,包括ZIP包在内的高级功能被精简,这使得原本依赖于这些功能的应用在J2ME平台上面临挑战。尤其在数据压缩与解压缩方面,J2ME本身不提供支持,这就...

    archive_j2me游戏俄罗斯方块源码.zip.zip

    【描述】"archive_j2me游戏俄罗斯方块源码.zip.zip" 描述简单明了,表明这个压缩文件包含了游戏的源代码,具体来说是俄罗斯方块这款游戏的实现。源代码是程序员用编程语言编写的原始指令,可以被其他开发者研究、...

    Gzip.zip_J2ME_Java_

    在J2ME中实现Gzip压缩,我们需要依赖Java的`java.util.zip`包,尽管J2ME的API可能比Java Standard Edition (Java SE)更为精简,但通常仍然包含基本的压缩和解压缩功能。 核心类`java.util.zip.GZIPOutputStream`...

    带有libretro、awt和sdl2前端的免费J2ME模拟器。.zip

    【标题】中的“带有libretro、awt和sdl2前端的免费J2ME模拟器”是指一个开源项目,其目标是实现对Java 2 Micro Edition (J2ME)平台的应用程序和游戏的模拟。这个模拟器允许用户在非J2ME设备上运行原本设计用于J2ME...

    GDN.zip_GDN_zip

    标题中的"GDN.zip_GDN_zip"可能是指一个与Java 2 Micro Edition (J2ME)相关的压缩文件,其中包含了用于生成域名(Domain Name)的工具或代码。在J2ME中,开发人员经常需要处理与网络连接相关的问题,包括创建和解析...

    J2ME弱联网

    - J2ME中的弱联网实现往往依赖于特定的库,如KVM(K Java Virtual Machine)提供的内置网络API,或者第三方库如Nokia的JSR 82 API(蓝牙连接)或M3GAP(多媒体消息服务)等,它们可以帮助开发者更容易地处理网络...

    lib.zip_J2ME_Java_

    标题中的"lib.zip_J2ME_Java_"表明这是一个与Java ME(J2ME)相关的库文件,被压缩在名为"lib.zip"的文件中。Java Micro Edition(J2ME)是一种Java平台,主要用于嵌入式设备和移动设备,如早期的手机和平板电脑。这...

    新版Android开发教程.rar

    � 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢。 � 暂不具备 Push Mail 和 Office(DataViz 、 QuickOffice 计划近期推出 ) 功能,目前主要面向的是普通消费 者 用户,对商业用户支持...

    jad生成器.zip

    unzip32.dll是一个动态链接库文件,通常用于Windows系统中解压缩ZIP文件。在这个压缩包中,它可能是JADMaker.exe运行所依赖的一个组件,用于处理ZIP格式的输入或输出。 酷玩手机游戏网下载软件说明.htm可能是一个...

    ms3.21.rar_ms3.21

    RAR文件可以包含多个文件和文件夹,并且支持高级压缩算法,提供了比ZIP格式更高的压缩率。 【描述】中的信息告诉我们,这个RAR文件包含了由J2ME(Java 2 Micro Edition)编写的程序。J2ME是Java平台的一个子集,...

    支持png文件所需要的dll文件

    zlib不仅支持PNG文件中的Deflate压缩算法,还被许多其他软件和格式所使用,如GIF、ZIP和TCP/IP协议栈。在PNG文件中,zlib负责对图像数据进行压缩和解压缩,以减少文件大小,提高传输效率。因此,对于任何处理PNG图像...

    我的所有 JAVA 项目.zip

    【压缩包子文件的文件名称列表】虽然只给出了一条信息"557sdsadasd",这看起来像是一个不完整的文件名,但通常在一个Java项目中,我们可能会看到以下类型的文件和目录结构: 1. **src/main/java**:这里存放所有的...

    me.zip_world

    标题“me.zip_world”暗示了这是一个与Java ME(Mobile Edition)相关的项目,可能是一个压缩文件,其中包含了开发或运行Java ME应用程序所需的元素。"j2me"是Java 2 Micro Edition的简称,它是Java平台的一个版本,...

    短信开发包 smslib.jar

    至于“压缩包子文件的文件名称列表:短信使用包”,这可能是包含smslib.jar以及相关文档、示例代码或依赖库的压缩文件。在实际开发中,开发者会解压这个包,获取smslib.jar并将其添加到他们的项目类路径中,以便调用...

    java贪吃蛇游戏(源代码+LW).zip

    4. **基于J2ME的手机游戏开发定稿.doc**:虽然标题中的“LW”可能指的是轻量级(Lightweight)Java,但这个文档可能是关于使用Java Micro Edition (J2ME) 开发手机游戏的技术资料,可能对了解移动平台的游戏开发有所...

    手机开发环境配置.doc

    Eclipse的核心是一个框架和一组基础服务,它本身并不具备直接的编程能力,而是依赖于各种插件来提供开发功能。例如,IBM的Websphere Studio就是一个基于Eclipse的IDE,包含了IBM开发的各种服务插件。Eclipse的可扩展...

    android开发培训课件

    在智能手机软件平台领域,Android面临如Symbian、Windows Mobile、RIM BlackBerry、iPhone、Palm、Brew和Java/J2ME等竞争。尽管在早期市场份额中,Android并不占据主导,但随着技术的演进和Google的持续投入,...

Global site tag (gtag.js) - Google Analytics