avilable方法不好用的,还是用缓冲的好

解决方案 »

  1.   

    由于想在xml文档中使用,我就是想把数据库中存储图片的二进制数据转换为BASE64编码,请问应该怎么搞。
    如果把本地的图片转换为BASE64编码,下面的几行代码即可。
          InputStream in = new FileInputStream("D:\\yan.jpg");; //获取二进制输入流
                byte[] bytes=new byte[in.available()];
                out.print(in.available());
                in.read(bytes);
             String content=(new sun.misc.BASE64Encoder()).encode( bytes);
             out.print(content);
      

  2.   

    available()方法对于一些二进制数据是无法获取其大小的!所以这里你只能写一个缓冲大小.如new byte[1024]即可
      

  3.   

    BASE64Encoder 支持 InputStream方式的,可以直接
    InputStream   in   =   rs.getBinaryStream(2);   
    byte[] bs = new sun.misc.BASE64Encoder().encode(in);
    String content = new String(bs);
    具体的看API说明吧,
      

  4.   

    楼上的您好,
    byte[] bs = new sun.misc.BASE64Encoder().encode(in);
    java中这样是错的。
      

  5.   

    参考一下是否能用
        InputStream in = rs.getBinaryStream(2);
        StringBuffer buff = new StringBuffer();
        byte[] bs = new byte[1024];
        int len;
        while ((len = in.read(bs)) != -1) {
          if (len == 1024) {
            buff.append(e.encode(bs));
          } else {
            buff.append(e.encode(new String(bs, 0, len).getBytes()));
          }
        }
        String result = buff.toString();