j2me使用Gzip压缩字符串
各位高手:我现在有个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);
}