读书人

sun.misc.BASE64Encoder存在的有关问题

发布时间: 2012-12-22 12:05:05 作者: rapoo

sun.misc.BASE64Encoder存在的问题及其解决方法
问题背景:
最近在开发中用到了sun.misc.BASE64Encoder。发现两个问题:
其一、当编码的字节较长时,encode出来的字符串会自动加入\n\r进行自动换行。针对这个问题,原因是rfc规范规定76个字符换一次行。
其二、编码效率较低。

解决办法:
1、重写BASE64Encoder:

 public static void main(String[] args) throws Exception {                     BASE64Encoder encoder=new BASE64Encoder();        sun.misc.BASE64Encoder sunEncoder=new sun.misc.BASE64Encoder();        byte[] testBytes=new byte[1024*1024*2];        long start=System.currentTimeMillis();        for(int i=0;i<10;i++)        {            sunEncoder.encode(testBytes);        }                System.out.println("[sun encoder]use time :"+(System.currentTimeMillis()-start));        start=System.currentTimeMillis();        for(int i=0;i<10;i++)        {            encoder.encode(testBytes);        }                System.out.println("[our encoder]use time :"+(System.currentTimeMillis()-start));    }

测试后发现,重写后,编码自动回行问题解决,编码效率也会提高一倍。

读书人网 >编程

热点推荐