Java解析E文件工具类

news2024/9/22 1:14:31

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @Description E文件工具类
 */
@Slf4j
public class EFileUtils {

    /**
     * 读字符串
     * @param text 内容
     * @param node 节点
     * @return
     */
    public static List<List<String>> readText(String text, String node) {
        try {
            int startIndex = 0;
            int thisIndex = 0;
            int endIndex = 0;
            boolean flag = false;

            text = text.substring(text.indexOf("<" + node), text.indexOf("</" + node) + node.length() + 2);
            String[] lines = text.split("\\r?\\n");
            List<List<String>> listDatas = new ArrayList<List<String>>();
            for (int i = 0; i < lines.length; i++) {
                if (flag) break;
                thisIndex++;
                if (lines[i].startsWith("<" + node)) {
                    startIndex = thisIndex;
                } else if (lines[i].startsWith("</" + node)) {
                    endIndex = thisIndex;
                    flag = true;
                } else if (startIndex != 0) {
                    String[] split = lines[i].split("\\s+");
                    List<String> lineDatas = new ArrayList<String>(Arrays.asList(split));
                    lineDatas.remove(0);//
                    listDatas.add(lineDatas);
                }
            }
            log.info(node + "节点标签在第" + startIndex + "-" + endIndex);
            return listDatas;
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        return null;
    }

    /**
     * 读文件
     * path 读取的文件路径
     * node E文件里的节点名称
     */
    public static List<List<String>> readEFile(String path, String node) {
        try {
            int startIndex = 0;
            int thisIndex = 0;
            int endIndex = 0;
            boolean flag = false;
            //文件内容的字符集 UTF8
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), StandardCharsets.UTF_8));
            String line = reader.readLine();
            List<List<String>> listDatas = new ArrayList<List<String>>();
            while ((line = reader.readLine()) != null && !flag) {
                thisIndex++;
                if (line.startsWith("<" + node)) {
                    startIndex = thisIndex;
                } else if (line.startsWith("</" + node)) {
                    endIndex = thisIndex;
                    flag = true;
                } else if (startIndex != 0) {
                    String[] split = line.split("\\s+");
                    List<String> lineDatas = new ArrayList<String>(Arrays.asList(split));
                    lineDatas.remove(0);//
                    listDatas.add(lineDatas);
                }
            }
            log.info(node + "节点标签在第" + startIndex + "-" + endIndex);
            reader.close();
            return listDatas;
        } catch (IOException e) {
            log.error(e.getMessage());
        }
        return null;
    }

    /**
     * 写文件
     *
     * @param txtInfo 内容
     * @param filePath 文件路径
     * @throws IOException
     */
    public static void writeTxt(String txtInfo, String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.exists()) {
            file.getParentFile().mkdirs();
        }
        file.createNewFile();
        // write 解决中文乱码问题
        // FileWriter fw = new FileWriter(file, true);
        // 写入文件的字符集 GBK 看需求而设定
        OutputStreamWriter fw = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(txtInfo);
        bw.flush();
        bw.close();
        fw.close();
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1075676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧公厕的原理与优势,了解一种更智能的卫生设施

智慧公厕是一种基于现代科技的智能化卫生设施&#xff0c;它的出现给人们的生活带来了巨大的改变和便利。本文将详细介绍智慧公厕的原理和优势&#xff0c;让我们一起了解一种更智能的卫生设施。 智慧公厕的原理主要基于物联网技术。通过将公厕内部各种设备和设施连接到互联网…

Java使用Hutool工具包将汉字转换成汉语拼音

主题&#xff1a;使用Java将汉字转换成拼音 介绍 在Java开发中&#xff0c;有时候我们需要将汉字转换成拼音&#xff0c;以方便进行数据处理、搜索和排序等操作。本文将介绍如何使用Hutool和Pinyin4j这两个Java库来实现汉字转拼音的功能。 依赖库介绍 在开始之前&#xff0c;…

无人直播矩阵系统源码开发------

全自动无人直播系统是一款让商家和企业实现无人直播的系统软件&#xff0c;让商家在门店直播卖货&#xff0c;实现解放双手&#xff0c;无需过多的人工干预。为了满足不同用户的需求&#xff0c;我们推出了OEM功能&#xff0c;让用户可以轻松地将该系统集成到自己的应用程序中。…

软考高项-第九章:项目范围管理

重要知识点&#xff1a; 以上总结&#xff0c;仅供参考。

视频通话中的Camera操作

视频通话也有打开本地摄像头预览的场景&#xff0c;但打开本地Camera预览逻辑&#xff0c;并非在Dailer APP中实现&#xff0c;具体流程图如下。 Dialer app中只调用 1、setCamera用于打开摄像头 相关动作在Ims apk中实现&#xff0c;open函数最后调用了VTSource.java中的doOp…

Python+Pickle/Parquet/HDF5...不同文件格式存储模式下的量化因子计算性能对比

在量化交易中&#xff0c;基于金融市场 L1/L2 报价和交易高频数据进行高频因子计算是一项常见的投研需求。随着金融市场数据量的不断增加&#xff0c;传统的关系数据库已经难以满足大规模数据的存储和查询需求。为了应对这一挑战&#xff0c;一部分用户选择了分布式文件系统&am…

2023年中国在线语言教育行业发展趋势分析:预计2026年在线语言教育市场规模有望实现1182.3亿元[图]

在线语言教育是指在信息化时代的背景下&#xff0c;使用电脑、手机、平板等基于网络的工具在任何地方、任何时间都可以对语言进行学习的一种教育方式&#xff0c;包括校内在线语言教育和校外在线语言教育。在线语言教育是对未来教育模式的探索&#xff0c;以数字化为杠杆&#…

03_学习springdoc与微服务结合_简述

文章目录 1 前言2 基本结构3 网关的配置3.1 ✍️ pom.xml 引入依赖3.2 &#x1f33f; application.yml 的配置3.2.1 Gateway 的配置3.2.2 Eureka Client 的配置3.2.3 Springdoc 的配置 3.3 Springdoc 配置类 4 影片服务 backend-film 的配置4.1 ✍️ pom.xml 引入依赖4.2 &…

Go语句与表达式深度解析:全案例手册

目录 语句1. 声明语句1.1 变量声明1.2 常量声明 2. 赋值语句3. 控制流语句3.1 条件语句if语句switch语句 3.2 循环语句for语句 3.3 跳转语句break语句continue语句return语句goto语句 4. 其他语句4.1 defer语句4.2 go语句 实战案例 表达式介绍、详解、举例1. 基础表达式1.1 字面…

在线免费无时长限制录屏工具 - 录猎在线版

需要录屏的小伙伴注意啦&#xff0c;想要长时间录制又不想花钱的&#xff0c;可以看下这款在线版录屏软件 —— 录猎在线版&#xff0c;一个录屏软件所需要的基本功能它都有&#xff0c;设置录制范围、录制的声音来源、摄像头也能录制的。同时它是支持Windows和Mac系统的&#…

Flink session集群运维

1、集群job manager挂了 kubectl describe pod session-deployment-only-84b8d674c7-ckl9w -n flink kubectl get pod -n flink -owide kubectl describe pod session-deployment-only-84b8d674c7-ms758 -n flink 两个job manager都挂了 准备重新部署集群 删除操作(删除fli…

GTX314L国产替代SI314—低功耗14通道电容触摸传感器芯片

Si314是一款具有自动灵敏度校准功能的14通道电容传感器&#xff0c;其工作电压范围为1.8~5.5V。 Si314设置休眠模式来节省功耗&#xff0c;此时&#xff0c;功耗电流为10uA3.3V。 Si314各个感应通道可实现独立使能、校准、灵敏度调节&#xff0c;可以确保可靠性&#xff0c;且具…

Mysql创建新用户控制权限信息

目录 登录 进入mysql数据库 创建新用户及设置密码 设置用户可远程连接登录 刷新权限 限制新用户只能从特定的主机或IP地址访问MySQL服务器 限制用户只对特定数据库的访问权限 限制用户只能访问特定数据库中的特定表 撤销给用户授予的特定权限 查看用户的权限信息 注 …

力扣:129. 求根节点到叶节点数字之和(Python3)

题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&#xff1a; 例如&#xff0c;从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所…

Android攻城狮学鸿蒙-配置

1、config.json配置 鸿蒙中的config.json应该类似于Android开发中Manifest.xml&#xff0c;可以进行页面的配置。根据顺序&#xff0c;会识别启动应用的时候&#xff0c;要打开哪个界面。 2、 Ability详解&#xff0c;以及与Android的Activity对比。 他人的学习文章连接&…

【运维日常】运维必备的 免费 在线画图工具,真的很好用!

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

外贸客户开发信怎么写?如何撰写营销邮件?

外贸客户开发信模板有哪些&#xff1f;高回复率的开发信技巧&#xff1f; 外贸客户开发信是一项至关重要的工作。这封信通常是你与潜在客户建立联系的第一步&#xff0c;因此必须仔细策划和撰写。蜂邮EDM将介绍如何写一封令人印象深刻的外贸客户开发信&#xff0c;以吸引潜在客…

PHP聊天系统源码 在线聊天系统网站源码 后台自适应PC与移动端

程序前台与后台自适应PC与移动端&#xff0c;支持一对多交流&#xff0c;可以自由创建新的房间与解散创建的房间&#xff0c;集成签到功能&#xff0c;等级功能&#xff0c;房间创建者可以对用户进行禁言、拉黑处理&#xff0c;房间可以由房间创建者自由设置进入密码&#xff0…

如何打造一个网络框架模块对接服务器

一、了解网络框架的基本原理 在开始打造网络框架模块之前&#xff0c;首先需要了解网络框架的基本原理。网络框架是一个软件模块&#xff0c;用于处理网络通信的各种细节&#xff0c;包括数据传输、协议解析、错误处理等。常见的网络框架有HTTP、TCP/IP、WebSocket等。 对啦&…

CSS蒙版效果

CSS蒙版 参考地址 显示效果 想要实现一个CSS蒙版效果达到一下效果 准备的原图如下&#xff1a; 实现起来比较简单&#xff0c;使用到了一个css特性。 mask-image: radial-gradient(white 0%, transparent 70%); mask-repeat: no-repeat; mask-position: center; mask-s…