【发布时间】:2014-03-21 05:04:46
【问题描述】:
我刚刚尝试了一个示例代码表单,它显示如下警告
SimpleConvertImage.java:7:warning:com.sun.org.apache.xerces.internal.impl.dv.util.Base64 是内部专有 API,可能会在未来的版本中删除 导入 com.sun.org.apache.xerces.internal.impl.dv.util.Base64; ^
SimpleConvertImage.java:16:警告:com.sun.org.apache.xerces.internal.impl.dv.util。 Base64 是内部专有 API,可能会在未来版本中删除 字符串 base64String=Base64.encode(baos.toByteArray()); ^
SimpleConvertImage.java:19:警告:com.sun.org.apache.xerces.internal.impl.dv.util .Base64 是内部专有 API,可能会在未来的版本中删除 byte[] bytearray =Base64.decode(base64String); ^
代码如下
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
public class SimpleConvertImage {
public static void main(String[] args) throws IOException{
String dirName="/root/Desktop";
ByteArrayOutputStream baos=new ByteArrayOutputStream(1000);
BufferedImage img=ImageIO.read(new File(dirName,"Screenshot.png"));
ImageIO.write(img, "png", baos);
baos.flush();
String base64String=Base64.encode(baos.toByteArray());
baos.close();
byte[] bytearray =Base64.decode(base64String);
BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray));
ImageIO.write(imag, "png", new File(dirName,"snap3.png"));
}
}
【问题讨论】:
-
警告说明了一切:您正在使用 Xerces 告诉您不要使用的类,因为它是内部的和专有的,可能会被删除,而且可能闻起来也很糟糕。幸运的是,还有其他可用的 base64 编码/解码选项:stackoverflow.com/questions/469695/decode-base64-data-in-java
-
而在Java 8中,终于有了官方支持stackoverflow.com/a/15646871/637889
标签: java