直接上代码:
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的俄罗斯方块"这一条,这可能是游戏的主代码文件夹或者包含了所有相关的源代码文件。在实际的源代码包中,通常会包括以下几个部分: 1. **项目结构**:项目...
然而,J2ME作为Java在小型设备上的简化版本,删减了大量非核心功能,包括ZIP包在内的高级功能被精简,这使得原本依赖于这些功能的应用在J2ME平台上面临挑战。尤其在数据压缩与解压缩方面,J2ME本身不提供支持,这就...
【描述】"archive_j2me游戏俄罗斯方块源码.zip.zip" 描述简单明了,表明这个压缩文件包含了游戏的源代码,具体来说是俄罗斯方块这款游戏的实现。源代码是程序员用编程语言编写的原始指令,可以被其他开发者研究、...
在J2ME中实现Gzip压缩,我们需要依赖Java的`java.util.zip`包,尽管J2ME的API可能比Java Standard Edition (Java SE)更为精简,但通常仍然包含基本的压缩和解压缩功能。 核心类`java.util.zip.GZIPOutputStream`...
【标题】中的“带有libretro、awt和sdl2前端的免费J2ME模拟器”是指一个开源项目,其目标是实现对Java 2 Micro Edition (J2ME)平台的应用程序和游戏的模拟。这个模拟器允许用户在非J2ME设备上运行原本设计用于J2ME...
标题中的"GDN.zip_GDN_zip"可能是指一个与Java 2 Micro Edition (J2ME)相关的压缩文件,其中包含了用于生成域名(Domain Name)的工具或代码。在J2ME中,开发人员经常需要处理与网络连接相关的问题,包括创建和解析...
- J2ME中的弱联网实现往往依赖于特定的库,如KVM(K Java Virtual Machine)提供的内置网络API,或者第三方库如Nokia的JSR 82 API(蓝牙连接)或M3GAP(多媒体消息服务)等,它们可以帮助开发者更容易地处理网络...
标题中的"lib.zip_J2ME_Java_"表明这是一个与Java ME(J2ME)相关的库文件,被压缩在名为"lib.zip"的文件中。Java Micro Edition(J2ME)是一种Java平台,主要用于嵌入式设备和移动设备,如早期的手机和平板电脑。这...
� 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢。 � 暂不具备 Push Mail 和 Office(DataViz 、 QuickOffice 计划近期推出 ) 功能,目前主要面向的是普通消费 者 用户,对商业用户支持...
unzip32.dll是一个动态链接库文件,通常用于Windows系统中解压缩ZIP文件。在这个压缩包中,它可能是JADMaker.exe运行所依赖的一个组件,用于处理ZIP格式的输入或输出。 酷玩手机游戏网下载软件说明.htm可能是一个...
RAR文件可以包含多个文件和文件夹,并且支持高级压缩算法,提供了比ZIP格式更高的压缩率。 【描述】中的信息告诉我们,这个RAR文件包含了由J2ME(Java 2 Micro Edition)编写的程序。J2ME是Java平台的一个子集,...
zlib不仅支持PNG文件中的Deflate压缩算法,还被许多其他软件和格式所使用,如GIF、ZIP和TCP/IP协议栈。在PNG文件中,zlib负责对图像数据进行压缩和解压缩,以减少文件大小,提高传输效率。因此,对于任何处理PNG图像...
【压缩包子文件的文件名称列表】虽然只给出了一条信息"557sdsadasd",这看起来像是一个不完整的文件名,但通常在一个Java项目中,我们可能会看到以下类型的文件和目录结构: 1. **src/main/java**:这里存放所有的...
标题“me.zip_world”暗示了这是一个与Java ME(Mobile Edition)相关的项目,可能是一个压缩文件,其中包含了开发或运行Java ME应用程序所需的元素。"j2me"是Java 2 Micro Edition的简称,它是Java平台的一个版本,...
至于“压缩包子文件的文件名称列表:短信使用包”,这可能是包含smslib.jar以及相关文档、示例代码或依赖库的压缩文件。在实际开发中,开发者会解压这个包,获取smslib.jar并将其添加到他们的项目类路径中,以便调用...
4. **基于J2ME的手机游戏开发定稿.doc**:虽然标题中的“LW”可能指的是轻量级(Lightweight)Java,但这个文档可能是关于使用Java Micro Edition (J2ME) 开发手机游戏的技术资料,可能对了解移动平台的游戏开发有所...
Eclipse的核心是一个框架和一组基础服务,它本身并不具备直接的编程能力,而是依赖于各种插件来提供开发功能。例如,IBM的Websphere Studio就是一个基于Eclipse的IDE,包含了IBM开发的各种服务插件。Eclipse的可扩展...
在智能手机软件平台领域,Android面临如Symbian、Windows Mobile、RIM BlackBerry、iPhone、Palm、Brew和Java/J2ME等竞争。尽管在早期市场份额中,Android并不占据主导,但随着技术的演进和Google的持续投入,...