我需要解决的问题

每条数据用分隔符号隔开。使用时读取内容。没有换行。

数据格式

123333333333;456546546546;

   private List<String> getSNFromFile(String tmpFile, List<String> modellist, List<TerminalTaskStatus> errorSN) {FileInputStream in = null;BufferedReader br = null;InputStreamReader isReader = null;List<String> dataList = new ArrayList<>();do {try {in=new FileInputStream(tmpFile);isReader =new InputStreamReader(in, "UTF-8");br = new BufferedReader(isReader);int page = 4096;int off = 0;char[] SNs = new char[page];String buffer = "";     //保存读取但未处理的数据String isDealing = "";  //保存正在处理的数据int readbytes = 0;      //保存当前读取的字节数while (true){readbytes = br.read(SNs, off, page);if (readbytes == -1 && buffer.isEmpty()){//文件读取结束break;}else if (readbytes != -1){off += readbytes;String strByte = new String(SNs,0,readbytes);buffer += strByte;buffer.replace(" ","");}//文件中没有分割符号“;”,即只有一个数据if (buffer.lastIndexOf(";") == -1){TerminalTaskStatus errorTask = new TerminalTaskStatus();//条件判断if (buffer.length() != 11){errorTask.setStatus(ConstantAPI.Data_is_illegal);errorTask.setTerminalid(buffer);errorSN.add(errorTask);break;}}else{if (readbytes >= page){isDealing = buffer.substring(0, buffer.lastIndexOf(";"));}else{isDealing = buffer;}buffer = buffer.substring(buffer.lastIndexOf(";")+1);//使用Apache库的StringUtils库解决数据前后的分隔符问题String[] machines = StringUtils.splitByWholeSeparator(isDealing, ";");//处理数据if (machines != null && machines.length > 0){for (String sn : machines){TerminalTaskStatus errorStatus = new TerminalTaskStatus();//数据必须是11位if (sn.length() != 11){errorStatus.setStatus(ConstantAPI.SN_is_illegal);errorStatus.setTerminalid(sn);errorSN.add(errorStatus);continue;}//保存一些数据String model = sn.substring(0, 3);if (!modellist.contains(model)){modellist.add(model);}//去重if (!dataList.contains(sn)){dataList.add(sn);}else{errorStatus.setStatus(ConstantAPI.Duplicate_SN);errorStatus.setTerminalid(sn);errorSN.add(errorStatus);}}}}if (readbytes < page){break;}}}catch (FileNotFoundException e){logger.error("FileNotFoundException, tmpFIle----"+tmpFile, e);break;}catch (IOException e){logger.error("IOException, tmpFIle----"+tmpFile, e);break;}catch (Exception e){logger.error("Exception, tmpFIle----"+tmpFile, e);break;}finally {if (br != null) {try {br.close();} catch (IOException e) {logger.error("IOException,close BufferedInputStream failed.  tmpFIle----"+tmpFile, e);break;}}if (isReader != null){try {isReader.close();} catch (IOException e) {e.printStackTrace();}}if (in != null) {try {in.close();} catch (IOException e) {logger.error("IOException,close FileInputStream failed.  tmpFIle----"+tmpFile, e);break;}}}}while (false);return dataList;}

处理逻辑:
将数据按指定大小读取出来,如果数据很多,做一个缓存,解析最大数据串,等于部分待下次解析。

Java边读文件变解析相关推荐

  1. java io 读文件

    java io 读文件 /**      * 读取文件      * @param fileName 文件名称      */     private void readFile(String fil ...

  2. Java中Xml文件的解析

    开发中比较常见的解析方式有三种,如下: 1. DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象. a) 优点:元素与元素之间保留结构关系,故可以进行增删改查操作. b)  ...

  3. java对xml文件的解析_Java对XML文件的解析

    XML简介 围绕XML涉及到四方面的技术: 1.数据定义Schema.DTD 2.数据解析DOM.SAX两种解析模型 3.样式风格XSTL,使用XSTL可以将XML文件中存放的内容按照指定的样式显示为 ...

  4. java 输出xml文件_java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

  5. Java实现eml文件的解析

    最近在做邮件归档,然后需要解析邮件导出的eml,记录每封邮件的归档时间,发件人.标题.发件时间.归档的目录 以下是一个demo示例:待完成此功能后再优化后续代码 import java.io.File ...

  6. Java第一次读文件慢_Java 关于文件读取速度问题,求助,谢谢啦

    展开全部 /** * ip条目实体类 */ public class IpEntry { String country, province, city, region, local; long sta ...

  7. java guava json文件_Json解析文件位置的问题

    有这么一段Json { "name": "java3d:vecmath:1.3.1" }, { "name": "net.sf.t ...

  8. java 快速读文件_java快速读取文件

    如何优雅读取文件,java想简单读写一个文件都要上10行代码.幸好guava和apache commons 都有提供简单操作文件工具. 简单介绍读取文件最后一行.读取文件第一行.读取大文件.往大文件追 ...

  9. java单元测试读文件数据_如何将文本文件资源读入Java单元测试?

    本问题已经有最佳答案,请猛点这里访问. 我有一个单元测试需要使用位于src/test/resources/abc.xml中的XML文件.把文件的内容放到String中最简单的方法是什么? 另外,sta ...

最新文章

  1. [翻译] Ruby Golf
  2. 单元测试Struts2的Action(包含源码)
  3. 【Windows 逆向】Cheat Engine 数据挖掘搜索方法和技巧 ( 数值类型选择 | 字符串数值类型选择 | 全部数值类型模糊选择 )
  4. Linux mktime 源代码简析
  5. 在微型计算机机箱的面板上,【简评】全侧透快拆设计,迎广101机箱体验
  6. KUR-Couriers
  7. 数据库学习建议之提高数据库速度的十条建议
  8. SELinux相关内容
  9. springboot+Druid+mybatis整合
  10. 数据库学习笔记4-隔离级别 Read Committed
  11. Regularized linear regression(正则化线性回归)----吴恩达机器学习
  12. 阅读圣经丨聚合与迭代
  13. 雷达信号处理——雷达系统
  14. 蜀海供应链数仓平台建设实践
  15. 数据库连接池实现原理
  16. Html 中的特殊符号表示
  17. 英语12个月份的英文和缩写
  18. 删除自定义reg注册表
  19. 使用Goodcrawler爬取700集的柯南
  20. 阿里云ecs服务器(Ubuntu)配置图形界面并远程桌面连接

热门文章

  1. Vim保姆级教程 宏录制 寄存器 映射 插件
  2. Deformable DETR论文翻译
  3. 基于vue的可视化编程
  4. SQL 实验项目4-数据库安全性
  5. 在Fedora 12上安装谷歌应用程序
  6. 【STM32F4系列】【HAL库】【自制库】RDA5807M收音机芯片驱动
  7. 《大学四年》——知乎 读书笔记
  8. 微前端调研及简析SPA实现原理
  9. 怎么判断英文网站是否做过谷歌优化?
  10. Ubuntu安装时卡在安装界面怎么办