当前位置: 首页 > news >正文

Java7新特性:try-with-resources写法

我们之前对流的操作是这样的,下面是我写的一个生成验证码的接口方法:

/** * 生成验证码 * @param request * @param response */ @GetMapping("captcha") public void getCaptcha(HttpServletRequest request, HttpServletResponse response){ String captchaText = captchaProducer.createText(); log.info("验证码内容:{}",captchaText); //存储redis,配置过期时间 , jedis/lettuce redisTemplate.opsForValue().set(getCaptchaKey(request),captchaText,CAPTCHA_CODE_EXPIRED, TimeUnit.MILLISECONDS); BufferedImage bufferedImage = captchaProducer.createImage(captchaText); try { ServletOutputStream outputStream = response.getOutputStream(); ImageIO.write(bufferedImage,"jpg",outputStream); outputStream.flush(); outputStream.close(); } catch (IOException e) { log.error("获取流出错:{}",e.getMessage()); } }

但在jdk7我们可以将流的操作写为:

try (ServletOutputStream outputStream = response.getOutputStream()){ ImageIO.write(bufferedImage,"jpg",outputStream); outputStream.flush(); } catch (IOException e) { log.error("获取流出错:{}",e.getMessage()); }
  • 什么是try-with-resources

    • 资源的关闭很多⼈停留在旧的流程上,jdk7新特性就有, 但是很多⼈以为是jdk8的

    • 在try( ...)⾥声明的资源,会在try-catch代码块结束后⾃动关闭掉

    • 注意点

      • 实现了AutoCloseable接⼝的类,在try()⾥声明该类实例的时候,try结束后⾃动调⽤的 close⽅法,这个动作会早于finally⾥调⽤的⽅法

      • 不管是否出现异常,try()⾥的实例都会被调⽤close⽅法

      • try⾥⾯可以声明多个⾃动关闭的对象,越早声明的对象,会越晚被close掉

http://www.jsqmd.com/news/386613/

相关文章:

  • 小白必看!DeepSeek-OCR-2保姆级使用指南
  • 将树莓派kali改为便携版
  • translategemma-27b-it部署案例:笔记本/台式机本地运行55语种翻译模型
  • 深度学习项目训练环境镜像:手把手教你部署完整开发环境
  • 通义千问3-Reranker-0.6B在法律文书分析中的实践
  • Qwen3-VL-Reranker-8B效果分析:图文视频三模态联合嵌入空间可视化展示
  • ccmusic-database音乐流派分类Web应用一键部署教程:基于Python爬虫技术
  • Ollama+translategemma-27b-it:快速搭建翻译服务
  • VibeVoice语音合成案例:AI朗读技术文档效果惊艳
  • YOLO系列新标杆:DAMOYOLO-S驱动的实时口罩检测-通用技术白皮书导读
  • 学术探险家的“智能装备库”:书匠策AI如何让课程论文写作变身闯关游戏
  • CTC语音唤醒实战:从环境搭建到应用部署
  • 解锁学术新次元:书匠策AI——课程论文的“超能外挂”
  • RMBG-2.0与Vue集成:前端图片编辑器开发实战
  • SPIRAN ART SUMMONER实际效果:‘阿尔贝德族机械装置’在Flux.1-Dev下的精密结构还原
  • StructBERT Siamese模型深度解析:句对联合编码 vs 单句编码对比
  • FLUX.1文生图全攻略:SDXL风格创作技巧分享
  • nlp_gte_sentence-embedding_chinese-large领域迁移实践:从通用到垂直行业的适配
  • OFA视觉蕴含模型部署案例:广电行业节目单图文一致性AI审核
  • 从创新者到模仿者:Bass 模型在市场扩散预测中的应用
  • YOLO12与Python爬虫结合实战:自动化数据采集与目标检测
  • 多模态实战:用Lychee-rerank-mm打造智能图片搜索引擎
  • 新手友好:EagleEye TinyNAS动态阈值调节功能详解
  • Pi0具身智能应用案例:智能客服机器人动作生成实践
  • Jimeng AI Studio Streamlit前端优化:st.session_state缓存提升响应速度
  • TOGAF 实战:微服务 vs 单体架构吵不停?用这 3 个维度判断架构好坏 - 智慧园区
  • YOLO12企业定制:私有模型仓库+权限管控+审计日志增强版方案
  • SenseVoice-small-onnx中小企业部署方案:低成本GPU语音识别落地实践
  • 学术写作“变形记”:书匠策AI如何让课程论文从“青铜”秒变“王者”
  • 从零开始:Lychee Rerank多模态排序系统搭建教程