Java中Base64的几种用法小结

 更新时间:2026年04月13日 08:58:27   作者:爱码少年 00fly.online  
文章简要介绍了Java中Base64编码和解码的常见应用场景,包括字符串、文件、本地图片和网络图片的编码解码,并介绍了Java8及以上版本内置的java.util.Base64工具类的使用方法,需要的朋友可以参考下

一、简要概述

在 Java 中使用 Base64 编码和解码非常常见,尤其是在处理网络传输、加密数据、图片处理等场景。Java 8 及以上版本提供了内置的 java.util.Base64 工具类,非常方便使用。

二、几种用法

1、字符串编码解码

 /**
     * URL安全编码
     */
    @Test
    public void test1()
    {
        String input = RandomStringUtils.randomAlphanumeric(50);
        String encoded = Base64.getUrlEncoder().encodeToString(input.getBytes());
        log.info("{} --> {}", input, encoded);
        
        // 解码
        byte[] decodeBytes = Base64.getUrlDecoder().decode(encoded);
        log.info(new String(decodeBytes));
    }

2、文件编码解码

 /**
     * 安全编码文件
     * 
     * @throws IOException
     */
    @Test
    public void testFile()
        throws IOException
    {
        byte[] fileBytes = Files.readAllBytes(Paths.get(new ClassPathResource("log4j2.xml").getURI()));
        String encoded = Base64.getUrlEncoder().encodeToString(fileBytes);
        log.info("Encoded file: {}", encoded);
        
        // 解码
        byte[] decodeBytes = Base64.getUrlDecoder().decode(encoded);
        log.info(new String(decodeBytes));
    }

3、本地图片编码解码

 /**
     * 安全编码图片
     * 
     * @throws IOException
     */
    @Test
    public void testPic()
        throws IOException
    {
        // Paths相对路径为当前项目
        byte[] fileBytes = Files.readAllBytes(Paths.get("src/main/resources/data/18.jpg"));
        String encoded = Base64.getUrlEncoder().encodeToString(fileBytes);
        log.info("Encoded file: {}", encoded);
        
        // 解码
        byte[] decodeBytes = Base64.getUrlDecoder().decode(encoded);
        Files.write(Paths.get("/001.jpg"), decodeBytes);
    }

4、网络图片编码解码

  /**
     * 安全编码图片
     * 
     * @throws IOException
     */
    @Test
    public void testNetPic()
        throws IOException
    {
        Resource resource = new UrlResource("https://i-blog.csdnimg.cn/direct/d4f0934d9ac041d583f81126fcc40f1d.png");
        try (InputStream is = resource.getInputStream())
        {
            // 编码解码网络图片
            String encoded = Base64.getUrlEncoder().encodeToString(IOUtils.toByteArray(is));
            byte[] decodeBytes = Base64.getUrlDecoder().decode(encoded);
            Files.write(Paths.get("/002.jpg"), decodeBytes);
        }
    }

到此这篇关于Java中Base64的几种用法小结的文章就介绍到这了,更多相关Java Base64用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java终止循环体的具体实现

    Java终止循环体的具体实现

    这篇文章主要介绍了Java终止循环体的具体实现,需要的朋友可以参考下
    2014-02-02
  • java实现interceptor拦截登录权限

    java实现interceptor拦截登录权限

    Java里的拦截器是动态拦截action调用的对象,本文主要介绍了java实现interceptor拦截登录权限,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • SpringBoot整合H2数据库的操作方法

    SpringBoot整合H2数据库的操作方法

    H2是一个Java语言编写的嵌入式数据库,它不受平台的限制,同时H2提供了一个十分方便的web控制台,用于操作和管理数据库内容,本文介绍SpringBoot整合H2数据库的方法,感兴趣的朋友一起看看吧
    2024-01-01
  • Java TimedCache 带时间缓存工具类详解使用

    Java TimedCache 带时间缓存工具类详解使用

    工具类是包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期工具等各类常用工具包,本文将介绍带时间缓存工具类
    2021-10-10
  • 基于Restful接口调用方法总结(超详细)

    基于Restful接口调用方法总结(超详细)

    下面小编就为大家带来一篇基于Restful接口调用方法总结(超详细)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 使用Spring Cache设置缓存条件操作

    使用Spring Cache设置缓存条件操作

    这篇文章主要介绍了使用Spring Cache设置缓存条件操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java多线程之线程安全问题详解

    Java多线程之线程安全问题详解

    这篇文章主要为大家详细介绍了Java多线程之线程安全问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 浅谈HttpClient、okhttp和RestTemplate的区别

    浅谈HttpClient、okhttp和RestTemplate的区别

    这篇文章主要介绍了HttpClient、okhttp和RestTemplate的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • springboot配置https访问的方法

    springboot配置https访问的方法

    这篇文章主要介绍了springboot配置https访问的方法,需要的朋友可以参考下
    2018-11-11
  • springboot整合vue项目(小试牛刀)

    springboot整合vue项目(小试牛刀)

    这篇文章主要介绍了springboot整合vue项目(小试牛刀),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论