文件解析工具

【java】properties文件解析工具 前言 java编程中,常用的配置文件中除了xml文件(博文请见 XML文件解析工具 )以外,可能就properties文件用到的比较多,因此将properties文件解析方式写成工具是很有必要的。 基本思路 properties文件是以 key = value 格式来存储内容的,与java中的map很相似,因此我们可以将properties文件中的内容读取到map中保存;一个工程中可能存在多个pr... 阅读详情

前言

对Excel & CSV 文件解析

package com.wind.bird.Utils;

import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import org.apache.commons.validator.Var;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.util.NumberToTextConverter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @Author windBird
 * @Date 2023/11/25 21:28
 * @ClassName FileParseUtil
 * coding ^_^ every Day
 * @Desc  excel & csv  parse
 */
public class FileParseUtil {

    private static final Logger log = LoggerFactory.getLogger(FileParseUtil.class);


    /**
     * @param file
     * @return
     */
    public static List<Object[]> readFileToList(MultipartFile file) {
        String fileName = file.getOriginalFilename();
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        try {
            switch (suffixName) {
                case FileTypeEnum.CSV:
                    return parseFileWithCsv(file);
                case FileTypeEnum.XLS:
                    return readExcelWithXLs(file);
                case FileTypeEnum.XLSX:
                    return parseExcelWithXlsx(file);
                default:
                    return null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new ArrayList<Object[]>();
    }

    private static List<Object[]> parseExcelWithXlsx(MultipartFile file) throws IOException {
        XSSFWorkbook xssfWorkbook = null;
        List<Object[]> list = new ArrayList<Object[]>();
        InputStream inputStream = file.getInputStream();
        try {
             xssfWorkbook = new XSSFWorkbook(inputStream);
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
            XSSFRow xssfRow = null;
            XSSFCell xssfCell = null;
            Object cellValue = null;
            for (int i = 1; i <= xssfSheet.getPhysicalNumberOfRows(); i++) {
                xssfRow = xssfSheet.getRow(i);
                if (null == xssfRow) {
                    continue;
                }

                Object[] values = new Object[xssfSheet.getRow(0).getLastCellNum()];
                for (int j = 0; j <= xssfRow.getLastCellNum(); j++) {
                    xssfCell = xssfRow.getCell(j);
                    if (null == xssfCell) {
                        continue;
                    }
                    switch (xssfCell.getCellType()) {
                        case Cell.CELL_TYPE_STRING:
                            cellValue = xssfCell.getStringCellValue();
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            if (DateUtil.isCellDateFormatted(xssfCell)) {

                                cellValue = DateUtil.getJavaDate(xssfCell.getNumericCellValue());
                                break;
                            } else {
                                cellValue = NumberToTextConverter.toText(xssfCell.getNumericCellValue());
                                break;
                            }
                        case Cell.CELL_TYPE_BOOLEAN:
                            cellValue = xssfCell.getBooleanCellValue();
                            break;
                        case Cell.CELL_TYPE_FORMULA:
                            cellValue = xssfCell.getCellFormula();
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            cellValue = "";
                            break;
                        default:
                            cellValue = cellValue.toString();
                    }
                    values[j] = cellValue;
                }
                list.add(values);
            }
            return list;
        } catch (Exception e) {
            log.error("文件格式有误,请检查:{}", e);
            return null;
        } finally {
            if (null != inputStream) inputStream.close();
            if (null != xssfWorkbook) xssfWorkbook.close();
        }
    }

    private static List<Object[]> readExcelWithXLs(MultipartFile file) throws IOException {
        HSSFWorkbook hssfWorkbook = null;
        List<Object[]> list = new ArrayList<Object[]>();
        InputStream inputStream = file.getInputStream();
        try {
            hssfWorkbook = new HSSFWorkbook(inputStream);
            HSSFSheet xssfSheet = hssfWorkbook.getSheetAt(0);
            HSSFRow hssfRow = null;
            HSSFCell hssfCell = null;
            Object cellValue = null;
            for (int i = 1; i <= xssfSheet.getPhysicalNumberOfRows(); i++) {
                hssfRow = xssfSheet.getRow(i);
                if (null == hssfRow) {
                    continue;
                }
                Object[] values = new Object[xssfSheet.getRow(0).getLastCellNum()];
                for (int j = 0; j <= hssfRow.getLastCellNum(); j++) {
                    hssfCell = hssfRow.getCell(j);
                    if (null == hssfCell) {
                        continue;
                    }
                    switch (hssfCell.getCellType()) {
                        case Cell.CELL_TYPE_STRING:
                            cellValue = hssfCell.getStringCellValue();
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            if (DateUtil.isCellDateFormatted(hssfCell)) {
                                cellValue = DateUtil.getJavaDate(hssfCell.getNumericCellValue());
                                break;
                            } else {
                                cellValue = NumberToTextConverter.toText(hssfCell.getNumericCellValue());
                                break;
                            }
                        case Cell.CELL_TYPE_FORMULA:
                            cellValue = hssfCell.getCellFormula();
                            break;
                        case Cell.CELL_TYPE_BOOLEAN:
                            cellValue = hssfCell.getBooleanCellValue();
                            break;
                        case Cell.CELL_TYPE_BLANK:
                            cellValue = "";
                            break;
                        default:
                            cellValue = cellValue.toString();
                    }
                    values[j] = cellValue;
                }
                list.add(values);
            }
            return list;
        } catch (Exception e) {
            log.error("文件格式有误,请检查:{}", e);
            return null;
        } finally {
            if (null != inputStream) inputStream.close();

            if (null != hssfWorkbook) hssfWorkbook.close();

        }
    }

    private static List<Object[]> parseFileWithCsv(MultipartFile file) {
        List<Object[]> list = new ArrayList<>();
        int i = 0;
        try {
            CSVReader csvReader = new CSVReaderBuilder(
                    new BufferedReader(
                            new InputStreamReader(file.getInputStream()))).build();
            Iterator<String[]> iterator = csvReader.iterator();
            while (iterator.hasNext()) {
                String[] next = iterator.next();
                //去除第一行的表头,从第二行开始
                if (i >= 1) {
                    list.add(next);
                }
                i++;
            }
            return list;
        } catch (Exception e) {
            log.error("CSV文件读取异常");
            return list;
        }
    }


    public interface FileTypeEnum {
        String CSV = ".csv";
        String XLS = ".xls";
        String XLSX = ".xlsx";
    }
}

ts流文件解析工具 easyice v2.6 内含ts示例文件demo.ts ts流文件解析工具 easyice v2.6,支持windows xp, windows 7, windows 8下使用,内含ts示例文件demo.ts,可直接解析。 立即下载

相关推荐

TS Parser(TS流解析工具)

自己写的基于QT的码流解析工具。 特色: 1、支持导出XML 和 Text 文件。 2、支持Tag搜索。 3、支持大文件(2G+)码流解析。 4、支持PSI/SI表在码流中的出现时间。 欢迎反馈bug和意见。

vue2多个文件上传后再解析的小组件

vue2-上传3~4个文件后,解析文件信息,返回结果。

Edwardyd的博客 311

在线解析HTTP XML文件

在线解析HTTP XML文件

探秘Unblob:一款强大的在线文件解析工具

探秘Unblob:一款强大的在线文件解析工具 unblob Extract files from any kind of container formats 项目地址: https://gitcode.com/gh_mirrors/un/unblob ...

gitblog_00009的博客 1090

playwright-mcp 安装使用的详细教程

Playwright MCP 快速入门指南 Playwright MCP Server 是由微软开发的浏览器自动化服务,通过 MCP 协议为 AI/Agent/LLM 提供网页交互能力。它基于可访问性树而非屏幕截图,支持多种浏览器和运行模式。 安装要求: Node.js v18+ 命令行操作能力 支持 MCP 的客户端 安装方式: 通过 npx 快速启动:npx @playwright/mcp@latest 项目依赖安装:npm install @playwright/mcp 主要特性: 支持 Chrome

上善若水 8022

逆向解析抖音核心校验参数:bd-ticket-guard-client-data的Python生成逻辑

本文深入解析了抖音核心校验参数bd-ticket-guard-client-data的生成逻辑,详细介绍了其动态证书生成、非对称加密机制及Python实现方法。通过逆向分析,揭示了抖音安全体系的双层验证机制,包括RSA密钥对生成、证书签名及时间戳校验等关键技术要点,为开发者提供了一套完整的参数生成解决方案。

weixin_26642481的博客 417

免费在线文件解析 - 夸克网盘解析

本文介绍了一款免费在线工具,可突破夸克网盘下载限制。该工具操作简单:输入网盘文件工具和解析密码后获取文件列表,双击"获取下载链接"即可完成操作。实测下载速度表现良好,适合普通用户日常使用。工具地址已提供,方便读者直接获取体验。整个过程无需复杂设置,为夸克网盘用户提供了便捷的下载解决方案。

2403_89928352的博客 1687

SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南

本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。

weixin_26905487的博客 529

怎么在线预览.doc,.docx,.ofd,.pdf,.wps,.cad文件以及Office文档的在线解析方式。

Office文件在线预览是目前移动化办公的一种新趋势。Office在线预览指的是Office系列的文件在线查看而不依附域客户端的存在。在浏览器或者浏览器控件中可以预览查看Word、PDF、Excel、OFD、PPT等格式文档。usdoc文档在线服务正是为了解决这一问题而做出了优化的访问,充分发挥了前后端结合的优势,提供更好的阅读体验,Office在线预览指的是Office系列的文件在线查看而不依附域客户端的存在。在浏览器或者浏览器控件中可以预览查看Word、PDF、Excel、OFD、PPT等格式文档 地址

5449

自动化测试与AI的结合应用

自动化测试,人工智能,机器学习,深度学习,测试用例生成,缺陷预测,测试优化 1. 背景介绍 在软件开发领域,自动化测试已成为不可或缺的一部分,它可以提高测试效率、降低测试成本,并确保软件质量。然而,传统的自动化测试方法往往依赖于人工编写的测试用例,这不仅耗时费力,而且难以应对复杂软件

AI架构师小马 2248

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

SMFA(自调制特征聚合模块): SMFA模块用于协同建模局部和非局部信息,它分为两个分支:一个是EASA(Efficient Approximation of Self-Attention,简化的自注意力分支),用于捕获非局部信息;另一个是LDE(Local Detail Estimation,局部细节估计分支),用于捕获局部细节。EASA通过对输入特征进行下采样,然后利用全局特征的方差进行调制,再与原始特征进行聚合,提取非局部结构信息。LDE分支则通过卷积操作提取输入特征中的高频局部信息。

qq_64693987的博客 2208

免费文档解析工具-Textin

TextIn平台推出的【通用文档解析】功能,专为大学生量身定制!只需上传你的论文文档或图片,它就能迅速识别其中的文字信息,并按常见的阅读顺序进行完美还原。通过先进的OCR技术和智能算法,TextIn能够精准识别论文中的每一个文字、每一个表格,甚至是复杂的公式和图表。这意味着你可以更加高效地提取和利用论文中的关键信息,为学术研究提供强有力的支持!面对海量的文献资料,如何游刃有余的让处理?无论是PDF转Word、图片转Word,还是其他各种文档格式转换,TextIn都能一键搞定!

chenchen_AI的博客 2611

AI 辅助编程全景:演进、提效场景与未来趋势

本文系统梳理了AI辅助编程的发展历程与应用场景。演进路径分为三代:从代码补全工具(2023)、对话式助手(2024)到自主编程代理(2025)。在软件全生命周期中,AI可显著提升各环节效率:需求分析阶段节省30-60%文档编写时间;设计阶段缩短40-60%技术调研周期;编码阶段通过智能补全提升55%任务速度;测试阶段减少30-60%测试编写时间。数据显示,2025年84%开发者使用AI工具,41%代码由AI生成,平均每周节省3.6小时。AI正推动开发者角色从编写者转变为审核者,但复杂业务逻辑和架构设计仍需人

甘蓝的专栏 475

java xml文件解析工具_Xml文件解析工具 - java

解析Xml文件:就是把Xml文件里面的内容取出来。Xml文件解析工具:一个能解析Xml文件的类,即一个能把Xml文件里面的内容取出来的类。先给出一个Xml文件(student_infor.xml):足球篮球混球二球张三之子,体格壮硕,胆小如鼠,外号加菲猫!睡觉刷剧追星打豆豆刘家之女,酷爱唱歌! 但五音有其四,邻居不堪其扰,谓之刘嘶哑!先简单解析一下上面的Xml文件,代码如下:packagecom....

weixin_39700397的博客 404

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 396

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plces 电力电子仿真专业教程系列依托专业的电力电子仿真软件Plecs对各种电力电子常用的拓扑及实际设计的方案进行系统及仿真与软件代码仿真实践。通过对各种电路仿真原理的讲解及专业C语言代码程序的编写,提升学员的系统设计能力,软件编程能力与理论分析能力。

3649

检测文件解析漏洞的工具

检测文件解析漏洞的工具可以帮助安全研究人员和开发人员发现Web应用程序中可能存在的安全隐患。:这是一个开源项目,旨在帮助开发者检测和预防Zip Slip漏洞,这是一种允许攻击者覆盖或注入任意文件到受害者的文件系统中的常见文件解析漏洞。:这是一款由Tenable Network Security公司开发的漏洞扫描工具,广泛应用于计算机系统和网络的安全评估,包括文件解析漏洞的检测。

weixin_68416970的博客 1232

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

工具——XML文件解析器

编程中经常用到XML文件作配置方式,但是常用的解析方法过于繁锁,XML的解析过程是有非常固定的套路的。 也就是说,对XML文件的解析程序,存在很多“制式代码”能否做一个java工具去解析XML文件,只将其中数据的处理交予更高层。 概念:(此部分为查阅资料) XML(eXtensibleMarkupLanguage),种可扩展标记语言,应用于web开发的很多方面,常用于简化数据的存储和共享。 XML仅仅是纯文本,不同于HTML,XML中的标签都需要用户自己定义。XML...

weixin_44127838的博客 4023

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【Java工具】XML文件与Properites文件解析工具

  XML文件与Properties文件在我的Java学习中和以后要接触的框架中十分常见的文件类型。这些文件懂了相关的编写规则后会十分容易写出来,但是作为配置文件如何去用它才是关键。人根据自己要完成的目的编写相关文件,可是你把这个文件放在计算机面前它不懂啊,它只知道01序列。因此,对于这种高频出现的文件,我们有必要编程,编写一个工具来解析它,方便以后使用。我不是直接把相关解析工具代码直接贴出来,而是一步步写关于这个工具如何造出来,这样才能学习更深刻并且里面蕴含的工具思想也能写出来。 XML文件解析工具 初识

weixin_45500506的博客 537

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

XML解析工具以及Properties文件解析工具

XML文件解析 xml的标签之间,存在着明显的一对多的关系,是一种“树形解析器”,我们通过代码来解析出xml文件中的某些属性对应的值。 看一段xml,我们对其进行解析:`` <?xml version="1.0" encoding="UTF-8"?> <animals> <animal id ="1" name="湘子" color="红"> <...

weixin_44356253的博客 1600

XML文件解析工具

XML@TOC #我们一起学习XML文件解析 XML文件是java编程中的常客,用来它存储数据非常的方便,而我们通常要做的就是解析XML文件里面的存储的内容。当我们编写过一些XML文件的解析代码之后,就会感觉到文件的解析存在着许多相似的代码,那我们能不能把这些相似的代码提取出来,编写成相关XML解析的工具,这样极大地方便了以后对XML文件的解析,也符合java面向工具的编程思想,一下就是我写的xm...

weixin_44094141的博客 3899

.har 文件解析工具

1、harviewer       直接安装标记麻烦,有一个chrome 插件:Har Viewer 2、在线解析工具       https://ericduran.github.io/chromeHAR/   格式比较乱       https://toolbox.googleapps.com/apps/har_analyzer/   推荐,格式好看,支持搜索,只是显示有点小

yaya1943的专栏 6万+

文件解析工具类

package com.example.demo.util; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.util.ArrayList; import java.util.List; /** * 文件解析公共工具类 * * @author gblfy * @date 2020-10-13 */ @Slf4j public class FileUtil { //--------------------

Gblfy_Blog 945

har文件解析工具_java工具之解析yaml文件

工具使用背景很多配置项都是使用yaml的格式进行配置的, 按一定的格式进行缩进, 一眼看上去,清晰明了.如Springboot工程下图所示:如:k8s的Deploy文件:本次写这个yaml工具解析是想解析k8s的config文件,然后封装一个k8s客户端. 因为无论阿里云还是华为云,要查看多个容器的日志. 都不是方便.基础依赖这个工具是在已有的工具上进行封装的gradle:compile...

weixin_39524703的博客 735

java解析xml大文件工具类_xml解析工具类

创建一个xml解析工具类,了解其解析原理。全程使用封装思想。需求:创建一个xml解析工具类,通过用户指定的id值或者class文件路径判断其是否存在,如果存在就返回相对应的对象,如果不存在就返回null;需要用到的知识:【变量定义,数据类型转换,控制语句,循环,自定义方法,类的定义,多态,集合框架,IO流,异常体系,反射,xml解析等知识】工具类封装代码:package cn.yun.xmldom...

weixin_39963830的博客 959

ELF 文件解析工具1.7

ELF 文件解析工具1.7 去发现同类优质开源项目:https://gitcode.com/ ELF文件解析工具1.7是一款针对Executable and Linkable Format(可执行与可链接格式)二进制文件的解析工具。它能够帮助用户深入理解ELF文件的内部结构,是计算机科学领域研究和开发人员的得力助手。 关于ELF文件 ELF文件,全称为Executable and Linkable...

gitblog_06749的博客 833
上一篇: Docker 搭建Redis 集群之路
下一篇: 成长&工作&思考
WindwardBird
博客等级 码龄7年 19粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值