j2me使用Gzip压缩字符串

xw0312 2009-08-11 05:12:06
各位高手:我现在有个j2me的项目,需要在程序中对字符串进行Gzip压缩后发往服务器。我下载到了j2me polish里面GzipInputStream和GzipOutputStream的类,貌似是api的实现。有没有哪位高手能给出相应的实现压缩的代码啊。谢谢了。下面是我尝试写的一段代码,但是标红的位置提示空指针,请高手们看看程序要怎么修改才能实现此功能。

public static byte[] writeCompressObject(byte[] object_)
{

byte[] data_=null;
try
{
//建立字节数组输出流
ByteArrayOutputStream o = new ByteArrayOutputStream();
//建立gzip压缩输出流
gzout=new GZipOutputStream(o, 1024, GZipInputStream.TYPE_GZIP, 32767, 100);

gzout.write(object_);
gzout.flush();
gzout.close();
gzout.close();
//返回压缩字节流
data_=o.toByteArray();
o.close();
}catch(IOException e)
{
System.out.println(e);
}
return(data_);
}
//将压缩字节数组还原为Data类型数据对象
public static String readCompressObject(byte[] data_)
{
String object_=null;
try
{
//建立字节数组输入流
ByteArrayInputStream i = new ByteArrayInputStream(data_);
//建立gzip解压输入流
gzin = new GZipInputStream(i, 1024, GZipInputStream.TYPE_GZIP, true);

//按制定类型还原对象
object_=(String.valueOf(gzin.read()));
i.close();
//gzin.close();
gzin.close();
}/*catch(ClassNotFoundException e)
{
System.out.println(e);
}*/
catch(IOException e)
{
System.out.println(e);
}
return(object_);
}

public void paint(Graphics g)
{
//未压缩数据对象内容
//System.out.println("name="+testData_.name+" age="+testData_.age+" height="+testData_.height);
byte[] testData_= new byte[10];

//压缩
byte[] i_=writeCompressObject(testData_);
System.out.println("asdfasdfas = "+ i_);

/*
可执行保存或网络传输,需要时还原或在对端还原
*/

//解压缩
String o_=readCompressObject(i_);
//解压缩后对象内容
System.out.println("ncvncvb = " + o_);

g.setColor(0x000000);
g.fillRect(0,0,120,120);

g.setColor(0xffffff);
//g.drawString(i_, 10, 10, UP);
g.drawString(o_, 50, 50, UP);
}
...全文
436 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xw0312 2009-08-12
  • 打赏
  • 举报
回复
再次请教!
xw0312 2009-08-12
  • 打赏
  • 举报
回复
什么意思,不明白,楼上能说详细些么?谢谢
yangc_83 2009-08-12
  • 打赏
  • 举报
回复
byte[] data_=null;
这句改成NEW 看看
yangc_83 2009-08-12
  • 打赏
  • 举报
回复
byte[] data_=new byte[1024];
试下
kf156 2009-08-12
  • 打赏
  • 举报
回复

public static byte[] writeCompressObject(byte[] object_)
{

byte[] data_=null;
try
{
//建立字节数组输出流
ByteArrayOutputStream o = new ByteArrayOutputStream();
//建立gzip压缩输出流
gzout=new GZipOutputStream(o, 1024, GZipInputStream.TYPE_GZIP, 32767, 100);

gzout.write(object_);
gzout.flush();
// gzout.close(); 多了一个,注释了
gzout.close();
//返回压缩字节流
data_=o.toByteArray();
o.close();
}catch(IOException e)
{
System.out.println(e);
}
return(data_);
}

lc402431247 2009-08-11
  • 打赏
  • 举报
回复
帮顶

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧