我正在使用Sun Micro Systems的BASE64Encoder将图像转换为Base64字符串。问题是我在构建期间收到了警告,我不想要
Java代码 ..
public static String encodeToString(BufferedImage image, String type) {
String base64String = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ImageIO.write(image, type, bos);
byte[] imageBytes = bos.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
base64String = encoder.encode(imageBytes);
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
return base64String;
}
警告:
[javac] /Users/lucy/dev/workspace/flsv2/src/util/BufferImage.java:53: warning: BASE64Encoder is internal proprietary API and may be removed in a future release
[javac] BASE64Encoder encoder = new BASE64Encoder();
[javac] ^
[javac] /Users/lucy/dev/workspace/flsv2/src/util/BufferImage.java:53: warning: BASE64Encoder is internal proprietary API and may be removed in a future release
[javac] BASE64Encoder encoder = new BASE64Encoder();
[javac] ^
[javac] 2 warnings
有没有办法在上面的方法中使用Apache Commons,以便不会产生警告?请帮助..
答案 0 :(得分:3)
请不要使用内部com.sun.*
个包裹。如果您使用的是v6或更高版本,则可以使用DatatypeConverter。那么你的代码将如下所示。
String base64String = DatatypeConverter.printBase64Binary(baos.toByteArray());
byte[] bytearray = DatatypeConverter.parseBase64Binary(base64String);
或者,
您还可以使用:java.util.Base64
1.8
String base64String = new String(Base64.getEncoder().encode(bytesToEncode));
byte[] decordedValue = Base64.getDecoder().decode(base64String);
或者,您可以在apache commons
中创建一个方法调用过程,该过程在下面给出
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;
public String decode(String s) {
return StringUtils.newStringUtf8(Base64.decodeBase64(s));
}
public String encode(String s) {
return Base64.encodeBase64String(StringUtils.getBytesUtf8(s));
}