jdk6或者7Base64转码与解码

昨天遇到了一个问题,项目有些老旧,开发环境用的javase1.6,运行环境是jdk1.7,都无法使用jdk8自带的编码和解码。

如果有jdk8,请使用这几行代码。

        String orig = "hello world!";
		String desc = 
        Base64.getEncoder().encodeToString(orig.getBytes(StandardCharsets.UTF_8));
		System.out.println("加密后的字符串为:"+desc);
		
		String unDecodeStr=new         
        String(Base64.getDecoder().decode(desc),StandardCharsets.UTF_8);
		System.out.println("解密后的字符串为"+unDecodeStr)

如果是8以下,可以用以下两种方法解决。

1、尝试找你项目中的其它包里面有没有这个base64相关的包,比如我的项目里有个  fastjson 包,就可以使用

  // 类  com.alibaba.fastjson.util.Base64   
  String nStr =new String(Base64.decodeFast(encodeStr));
  System.out.println(nStr);

2、也有开源的jar包, javabase64-1.2.jar,可以直接点击后面进行下载下载地址。引入这个jar包后,几行代码就可以实现编码与解码了:

示例代码:

String类型 进行Base64编码

String encoded = Base64.encode("Hello, world!");

    String类型 进行Base64解码

String decoded = Base64.decode(encoded);

 指定字符编码方式

String encoded = Base64.encode("Hello, world!", "UTF-8");    

String decoded = Base64.decode(encoded, "UTF-8");   

对文件进行编码:

如果文件比较小,可以通过以下方式,直接读取到内存中进行编码处理

byte[] source = ...; // load your data here

byte[] encoded = Base64.encode(source);

byte[] decoded = Base64.decode(encoded);

如果大件比较大,则建议使用stream:

代码示例Base64编码:

InputStream inputStream = new FileInputStream("source.jpg");

OutputStream outputStream = new FileOutputStream("encoded.b64");

Base64.encode(inputStream, outputStream);

outputStream.close();

inputStream.close();

代码示例Base64解码:

InputStream inputStream = new FileInputStream("encoded.b64");

OutputStream outputStream = new FileOutputStream("decoded.jpg");

Base64.decode(inputStream, outputStream);

outputStream.close();

inputStream.close();


参考原文:https://blog.csdn.net/chenleixing/article/details/46543901 
 

你可能感兴趣的:(JAVA学习笔记)