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

记录一次流相关故障

记录一次流相关故障

1、项目中有个JSON字典文件,通过流的方式加载进来,写了个输入流转字符串的方法,idea开发环境下运行一切正常,打成jar或者war包运行时,只能加载出部分数据,一开始怀疑过运行内存分配过小、前后端数据传递时大小限制…。
通过逐步排查,找到了问题的根源,转换方法有问题。

    /*** 方法一(弃用)* 处理输入流,转成字符串* 这种写法有问题,is.available()不可靠,获取的文件可能被截断* * @param is* @return*/@Deprecatedprivate static String getTextFromInputStream(InputStream is) {String s = "";try {byte[] bytes = new byte[is.available()];is.read(bytes);s = new String(bytes, "utf-8");} catch (IOException e) {e.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}return s;}/*** 方法二* 处理输入流,转成字符串* 使用缓冲区,先写入到ByteArrayOutputStream** @return*/private static String handleStream(InputStream is) {String s = "";ByteArrayOutputStream output = null;try {output = new ByteArrayOutputStream();byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = is.read(buffer)) != -1) {output.write(buffer, 0, bytesRead);}byte[] result = output.toByteArray();s = new String(result, "utf-8");} catch (Exception e) {e.printStackTrace();} finally {if (output != null) {try {output.close();} catch (IOException e) {throw new RuntimeException(e);}}}return s;}

小尾巴~~
只要有积累,就会有进步

http://www.lryc.cn/news/324473.html

相关文章:

  • linux源配置:ubuntu、centos;lspci与lsmod命令区别
  • 面试算法-88-反转链表
  • 如何在个人Windows电脑搭建Cloudreve云盘并实现无公网IP远程访问
  • 一文详解Rust中的字符串
  • Mysql中用户密码修改
  • day14-SpringBoot 原理篇
  • ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】
  • P1563 [NOIP2016 提高组] 玩具谜题
  • 【数据库】数据库语言
  • javascript单例模式字面量定义的接口和匿名函数定义的接口;他们之间访问私有变量和私有函数之间的区别
  • 啥是大语言模型LLM
  • vue3之路由导航故障
  • Dr4g0n
  • 蓝桥杯每日一题:扫雷
  • net core API 后台系统操作日志的实现思路
  • ORACLE 知识整理
  • 业务服务:redisson
  • 面试算法-100-零钱兑换
  • 【Leetcode每日一题】 动态规划 - 使用最小花费爬楼梯(难度⭐)(41)
  • Springboot旅游管理系统设计与实现
  • c++学习笔记(10)
  • Visual Studio - 添加快捷键图标
  • 突破边界:Web3开启数字化社会的新纪元
  • docker仓库登录及配置insecure-registries的方法
  • Lambda函数与Selenium WebDriverWait类一起使用
  • V R元宇宙平台的未来方向|V R主题馆加 盟|游戏体验馆
  • sox命令用法
  • Android kotlin全局悬浮窗全屏功能和锁屏页面全屏悬浮窗功能二
  • [数据结构]二叉树与递归OJ
  • vue iframe实现父页面实时调用子页面方法和内容,已解决