All Downloads are FREE. Search and download functionalities are using the official Maven repository.

devutility.internal.data.codec.Base64Utils Maven / Gradle / Ivy

There is a newer version: 1.3.8.1
Show newest version
package devutility.internal.data.codec;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Base64;

import devutility.internal.data.uri.UriHeader;
import devutility.internal.data.uri.UriUtils;
import devutility.internal.nio.RandomAccessFileUtils;

/**
 * 
 * Base64Utils
 * 
 * @author: Aldwin Su
 * @version: 2019-04-10 15:50:53
 */
public class Base64Utils {
	/**
	 * Encode bytes array to base64 bytes.
	 * @param bytes bytes array.
	 * @return byte[]
	 */
	public static byte[] encode(byte[] bytes) {
		return Base64.getEncoder().encode(bytes);
	}

	/**
	 * Encode base64 bytes to string.
	 * @param bytes Base64 bytes.
	 * @return String
	 * @throws UnsupportedEncodingException When can't support UTF-8 coder.
	 */
	public static String encodeToString(byte[] bytes) throws UnsupportedEncodingException {
		byte[] base64Bytes = encode(bytes);
		return Utf8Utils.decode(base64Bytes);
	}

	/**
	 * Decode base64 bytes to normal bytes.
	 * @param bytes Base64 bytes array.
	 * @return byte[]
	 */
	public static byte[] decode(byte[] bytes) {
		return Base64.getDecoder().decode(bytes);
	}

	/**
	 * Decode base64 string to bytes array.
	 * @param value Base64 string value.
	 * @return {@code byte[]}
	 * @throws UnsupportedEncodingException
	 */
	public static byte[] decode(String value) throws UnsupportedEncodingException {
		byte[] base64Bytes = Utf8Utils.encode(value);
		return decode(base64Bytes);
	}

	/**
	 * Decode base64 string and save into file.
	 * @param file File path.
	 * @param value String value.
	 * @throws IOException From RandomAccessFileUtils.
	 */
	public static void decodeToFile(String file, String value) throws IOException {
		byte[] bytes = Base64.getDecoder().decode(value);
		RandomAccessFileUtils.save(file, bytes);
	}

	/**
	 * Decode ToImage
	 * @param file
	 * @param value
	 * @throws IOException void
	 */
	public static void decodeToImage(String file, String value) throws IOException {
		UriHeader uriHeader = UriUtils.uriHeader(value);

		if (uriHeader == null) {
			throw new IllegalArgumentException("Invalid base64 header format!");
		}

		String base64 = value.substring(uriHeader.getHeader().length());
		decodeToFile(file, base64);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy