android base64 outofmemoryerror,在Java中创建Base64字符串时出现OutOfMemory吗?

我使用ostermillerutils库创建base64字符串,但是如果图像很重,则会出现OutOfMemory错误.如果我尝试转换的图像是简单图像,则代码工作正常.

public String createBase64String(InputStream in) {

//collect = new ByteArrayOutputStream();

ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] buf = new byte[1024];

try {

for(int readNum; (readNum = in.read(buf)) != -1; ) {

bos.write(buf, 0, readNum);

}

}

catch (IOException ex) {

Logger.getInstance().debug("XML createBase64String: IOException");

return null;

}

finally {

if (in != null) {

try {

in.close();

}

catch (IOException ex) {

;

}

}

}

byte[] ba = bos.toByteArray();

String coded = Base64.encodeToString(ba);

return coded;

}

我也尝试这样做,但是当我尝试对其进行解码时,base64是不正确的.

public void createBase64String(InputStream in) throws IOException {

//collect = new ByteArrayOutputStream();

byte[] buf = new byte[1024];

int readNum = 0;

try {

while((readNum = in.read(buf)) != -1)

{

smtp.addBase64(Base64.encodeBase64String(buf));

}

}

catch (IOException ex) {

Logger.getInstance().debug("XML createBase64String: IOException");

}

finally {

if (in != null) {

in.close();

}

}

}

请为JDK 1.4和更高版本的Java建议解决方案.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值