Подтвердить что ты не робот

Как избежать предупреждения для базы 64?

Я только что попробовал примерную форму кода, он показывает предупреждение следующим образом

SimpleConvertImage.java:7: warning: com.sun.org.apache.xerces.internal.impl.dv.util.Base64 является внутренним патентованным API и может быть удален в будущем выпуске import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;                                                       ^

SimpleConvertImage.java:16: warning: com.sun.org.apache.xerces.internal.impl.dv.util. Base64 является внутренним проприетарным API и может быть удален в будущем выпуске   String base64String = Base64.encode(baos.toByteArray());                               ^

     
  

SimpleConvertImage.java:19: warning: 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"));
    }
}

код >

4b9b3361

Ответ 1

Не используйте внутренние пакеты com.sun. *. Если вы на v6 или выше, вы можете использовать DatatypeConverter. Ваш код будет выглядеть так:

String base64String = DatatypeConverter.printBase64Binary(baos.toByteArray());
byte[] bytearray = DatatypeConverter.parseBase64Binary(base64String);

Ответ 2

Вы также можете использовать: java.util.Base64 Добавлено в Java 1.8

String encryptedValue = new String(Base64.getEncoder().encode(bytesToEncode));
byte[] decodedValue = Base64.getDecoder().decode(encryptedDataString);