У меня есть изображение в кодировке Base64. Каков наилучший способ декодирования этого в Java? Надеюсь, используя только библиотеки, входящие в состав Sun Java 6.
Переведено автоматически
Ответ 1
Начиная с Java 8, существует официально поддерживаемый API для кодирования и декодирования Base64. Со временем это, вероятно, станет выбором по умолчанию.
API включает в себя класс java.util.Base64 и вложенные в него классы. Он поддерживает три различных варианта: basic, URL safe и MIME.
Документация для java.util.Base64 включает в себя еще несколько методов для настройки кодеров и декодеров, а также для использования различных классов в качестве входных и выходных данных (массивы байтов, строки, байт-буферы, java.io потоки).
ОБНОВЛЕНИЕ: JAXB больше не поставляется с Java (начиная с Java 11). Если для вашего проекта требуется JAXB, вам нужно будет настроить соответствующие библиотеки через вашу систему управления зависимостями, например Maven. Если вам требуется компилятор (xjc.exe), вам также необходимо загрузить его отдельно.
Ответ 3
Нет необходимости использовать commons - Sun поставляет кодировщик base64 с Java. Вы можете импортировать его как таковой:
Где encodedBytes это либо java.lang.String, либо a java.io.InputStream. Просто помните, что sun.* классы не "официально поддерживаются" Sun.
РЕДАКТИРОВАТЬ: Кто знал, что это будет самый противоречивый ответ, который я когда-либо публиковал? Я точно знаю, что пакеты sun. * не поддерживаются и их существование не гарантируется, и я знаю о Commons и использую его постоянно. Однако в постере был запрошен класс, который был "включен в Sun Java 6", и это то, на что я пытался ответить. Я согласен, что Commons - лучший способ в целом.
ПРАВКА 2: Как указывает amir75 ниже, Java 6 + поставляется с JAXB, который содержит поддерживаемый код для кодирования / декодирования Base64. Пожалуйста, ознакомьтесь с ответом Джереми Росса ниже.
Ответ 4
В частности, в кодеке Commons: class Base64 в decode(byte[] array) или encode(byte[] array)