Java中I/O流读取数据不完整的问题解决

 更新时间:2022年05月12日 09:35:21   作者:小犹太️  
本文主要介绍了ava中I/O流读取数据不完整的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一·问题描述:

1.利用Java的转换流去读取一个json文件数据,获取的数据无法被解析为json格式数据(格式总是报错),且获取的数据末尾缺少一部分数据。

(1)Java源代码如图

(2)原json文件如图

(3)解析获取的数据如图:转换为json格式数据报错

二·问题原因:

1.最后一次缓存数组里面的数据,没有拼接到最终字符串数据里面 2.stringBuffer.append(buffer)拼接数据的方法,内部可能会加点空格之类的什么数据,结果导致获取的数据不完整,但数据长度却比原文件数据长。

三·解决办法:

1.由于输入流没有flush方法,因此不能通过刷新解决,但是可以通过改变拼接最终数据的方法解决。

具体操作如下所示:

(1)若缓存数组为:字符数组
将原拼接数据形式: stringBuffer.append(buffer);
更改为这种拼接数据形式(推荐): stringBuffer.append(buffer,0,length);

(2)若缓存数组为:字节数组
将原转换数据形式: String str = new String(cbuf);
更改为这种拼接数据形式(推荐): String str = new String(cbuf,0,len);

(3)若是利用输出流输出数据,也建议使用这种风格。
例如:outputStreamWriter.write(cbuf,0,len);

最终Java源代码如图所示:结果与原json数据长度差一位,基本完全一致

四·测试结果:成功

1.将获取的数据进行json格式解析,结果json格式解析正确且文件末尾数据完整,同时与原json数据长度差一位,基本完全一致。(差的那一位可能是空格)

到此这篇关于Java中I/O流读取数据不完整的问题解决的文章就介绍到这了,更多相关Java I/O流读取数据不完整 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java如何利用策略模式替代if/else语句

    Java如何利用策略模式替代if/else语句

    这篇文章主要介绍了Java如何利用策略模式替代if/else语句,帮助大家优化自己的代码,提高程序运行效率,感兴趣的朋友可以了解下
    2020-09-09
  • mybatis-plus 使用Condition拼接Sql语句各方法的用法

    mybatis-plus 使用Condition拼接Sql语句各方法的用法

    这篇文章主要介绍了mybatis-plus 使用Condition拼接Sql语句各方法的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot多环境开发与日志小结

    SpringBoot多环境开发与日志小结

    这篇文章主要介绍了SpringBoot多环境开发与日志,下面给大家说一下如何基于多环境开发做配置独立管理,务必掌握,需要的朋友可以参考下
    2022-08-08
  • 轻松掌握Java模板模式

    轻松掌握Java模板模式

    这篇文章主要帮助大家轻松掌握Java模板模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Java不用算数运算符来实现求和方法

    Java不用算数运算符来实现求和方法

    我们都知道,Java的运算符除了具有优先级之外,还有一个结合性的特点。当一个表达式中出现多种运算符时,执行的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的约束,以便确定是自左向右进行运算还是自右向左进行运算,但是如果不用运算符怎么求和呢
    2022-04-04
  • Java 实现完整功能的学生管理系统实例

    Java 实现完整功能的学生管理系统实例

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个完整版学生管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java基础第五篇 实施接口

    Java基础第五篇 实施接口

    在public和private的封装机制,我们实际上同时定义了类和接口,类和接口混合在一起。Java还提供了interface这一语法。这一语法将接口从类的具体定义中剥离出来,构成一个独立的主体,下面文章内容将为大家做详细介绍
    2021-09-09
  • 教你在JNA中将本地方法映射到JAVA代码中的示例

    教你在JNA中将本地方法映射到JAVA代码中的示例

    对于JNI来说,我们可以使用native关键字来定义本地方法。那么在JNA中有那些在JAVA代码中定义本地方法的方式呢?对JNA本地方法映射JAVA代码的相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • Spring底层事务原理解析

    Spring底层事务原理解析

    Spring事务有可能会提交,回滚、挂起、恢复,所以Spring事务提供了一种机制,可以让程序员来监听当前Spring事务所处于的状态,这篇文章主要介绍了Spring底层事务原理,需要的朋友可以参考下
    2022-12-12
  • Spring中bean的初始化和销毁几种实现方式详解

    Spring中bean的初始化和销毁几种实现方式详解

    这篇文章主要介绍了Spring中bean的初始化和销毁几种实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论