rdf-file:API

news2025/1/11 17:52:50

一:组件架构

在这里插入图片描述

  • intefaces模块:主要包含用户使用接口API
  • tools模块:包含组件内核实现的文件操作工具
  • codec模块:对文件结构,行数据,字段数据进行编码解码
  • meta模块: 元数据配置以及加载
  • loader/extension模块: 对配置、插件等资源进行加载
  • resource模块:对资源层抽象,组件内部实现classpath, file, oss加载,用户可以自定义插件实现其他存储加载
  • spi模块:开放给用户的插件扩展入口
  • config模块:配置相关的资源信息

二:FileConfig

创建文件操作工具的配置对象, 这里定义的参数优先级最高

属性类型必填默认值描述
typeprotocol目前不用关注 保留属性,后续可能扩展不是根据协议解析的文件操作
filePath操作文件的路径
fileDataTypeFileDataTypeEnum.ALL文件根据协议布局模板+数据定义模板进行文件处理,协议布局模板和数据定义模板都包含head, body, tail;但是文件在分片过程中如果是body分片, 利用同样的协议布局模板+数据定义模板需要指定数据类型FileDataTypeEnum.BODY
templatePath数据定义模板路径
templateEncodingutf-8数据定义模板文件的编码;优先级:FileConfig > TemplateConfig > FileDefaultConfig
fileEncodingutf-8
lineBreak\r\n生成文件的换行符;优先级 FileConfig > TemplateConfig > FileDefaultConfig
storageConfig文件操作的存储配置
processorKeysprocessor回调指定的key
summaryEnablefalse是否开启汇总功能
createEmptyFilefalse写文件时,如果没有数据是否生成空文件
rowValidators设置行级校验器
columnSplit保留属性,先不要关注
offset文件分片操作起始位置,通过setPartial方法设置
length文件分片操作数据长度,通过setPartial方法设置
isAppendfalse写文件时,是否在文件尾追加
isInputStream, 读数据时外部构建的输入流

三:FileDefaultConfig

FileDefaultConfig设置的属性是组件的默认配置 。

方法默认值描述
setDefaultFileEncodingutf-8设置读取或者生成文件的编码
setDefaultTemplateEncodingutf-8设置加载的数据定义模板的编码
setDefaultLineBreak\r\n设置生成文件的换行符,读取时组件都能识别
addDefaultFleParam设置扩展属性,组件内核不会使用,会透传给自己实现的扩展插件
setCommonLog设置日志回调的实现
setRdfProcessorPathclasspath*:META-INF/rdf-file/auto-processor/设置自动执行处理器存储和根路径
setRdfProtocolPathclasspath*:META-INF/rdf-file/protocol/设置协议布局模板存储和根路径
setRdfFormatPathclasspath*:META-INF/rdf-file/format/设置字段格式化方式存储和根路径
setRdfTemplatePathclasspath:设置数据定义模板存储和根路径

四:FileFactory

FileFactory是Rdf-File组件入口,通过FileFactory创建文件处理所需的工具对象

FileFactory创建工具参数对象描述
FileReaderFileConfig创建文件读工具
FileWriterFileConfig创建文件写工具
FileMergerFileConfig创建文件合并工具
FileValidatorFileConfig创建文件校验工具
FileSorterFileConfig创建文件排序工具
FileStorageStorageConfig创建文件存储操作工具
FileSplitterStorageConfig创建文件分割工具

五:FileReader

方法描述
< T > T readHead(Class<?> requiredType)将读取的头,转换成指定类型 不能是接口
< T > T readRow(Class<?> requiredType)读取body数据并将每行数据转换成指定类型,不能是接口
String readLine()读取一行数据,不做解析转换
Summary getSummary()获取汇总字段,FileConfig.summaryEnable=false时抛异常
void close()关闭流

六:FileValidator

方法描述
ValidateResult validate()文件校验 根据文件模板校验文件格式,包括非空字段 根据文件模板配置的RowValidator校验每行数据 根据文件模板配置的汇总信息校验文件汇总信息和总笔数

七:FileSorter

7.1 接口方法

接口方法描述
SortResult sort(SortConfig sortConfig)文件排序

7.2 SortConfig参数说明

入参SortConfig配置必填描述
sortIndexes[]指定排序字段索引,若排序字段值相等整行排序,若sortIndexes没有指定,整行排序
resultPath排序临时文件存放目录地址
resultFileName结果文件名,没有设置系统生成一个
sortType排序方式,升序或降序
headLines保留字段,不要设置
executor排序使用的线程池
resultFileType返回的结果类型,SLICE_FILE_PATH: 有序的分片文件,FULL_FILE_PATH: 合成一个有序的完整文件
columnRearrangeIndex保留字段:对字段重新排序 如:{5,3,6,0,2,1}
rowFilters对行数据进行过滤判定的回调
sliceSize默认 1M
resultStorageConfig结果文件存放存储,默认NAS
sourceFilePaths多文件排序时设置,覆盖FileConfig.filePath参数

7.3 结果对象说明

结果对象值描述
String fullFilePath当ResultFileTypeEnum.FULL_FILE_PATH时整个排完序文件path
String headSlicePath分片头路径
List bodySlicePath分片体路径
String tailSlicePath分片尾路径

八:FileSplitter

文件分割器,返回结果只是标记了分片文件的范围,没有真正切分文件
文件切分保证在数据的行尾,不会在一行数据中间

方法描述
List< FileSlice> split(String path, int sliceSize)对整个文件按大小切分
FileSlice getHeadSlice(FileConfig fileConfig)获取文件头分片,分片范围内只包含文件头
FileSlice getBodySlice(FileConfig fileConfig)获取文件body分片,分片范围内只包含文件body数据
List< FileSlice> getBodySlices(FileConfig fileConfig, int sliceSize)对文件body按大小切分, 返回文件body分片列表
FileSlice getTailSlice(FileConfig fileConfig)获取文件尾分片,分片范围内只包含文件尾

九:FileMerger

MergerConfig参数设置描述
setHeadFilePaths(List headFilePaths)合并头文件列表,同存储
setHeadFilePathHolders(List headFilePaths)合并头文件列表,可以不同存储
setBodyFilePaths(List bodyFilePaths)合并body文件列表,同存储
setBodyFilePathHolders(List bodyFilePaths)合并body文件列表,可以不同存储
setTailFilePaths(List tailFilePaths)合并尾文件列表,同存储
setTailFilePathHolders(List tailFilePaths)合并尾文件列表,可以不同存储
setExistFilePaths(List existFilePaths)合并已存在完整文件列表,同存储
setExistFilePathHolders(List existFilePaths)合并已存在完整文件列表,可以不同存储
setStreamAppend(boolean streamAppend)合并的时候是否开启流合并
方法描述
void merge(MergerConfig config)文件合并

十:FileWriter

方法描述
void writeHead(Object headBean)写入头部信息, 传入一个javabean对象或者map
void writeRow(Object rowBean)写入一行记录, 传入一个javabean对象或者map
void writeTail(Object tailBean)写入尾部信息, 传入一个javabean对象或者map
void writeLine(String line)直接写入一行字符串
Summary geSummary()获取写入的汇总信息
void close()关闭流

十一:FileStorage

方法描述
void createNewFile(String filePath)创建一个空文件,不能创建文件夹,如果创建文件前文件已存在则覆盖原文件
FileInfo getFileInfo(String filePath)获取文件信息:是否存在、文件大小、最后修改时间,metadata,userMetadata 特定存储返回一些特殊信息如oss的md5等
List< String> listFiles(String folderName, String[] regexs)只查询当前文件夹下的文件和文件夹全路径,regexs 正则式可以过滤
List< String> listFiles(String folderName, FilePathFilter… fileFilters)只查询当前文件夹下的文件和文件夹全路径, fileFilters过滤器过滤
List< String> listAllFiles(String folderName, String[] regexs)只查询文件夹子文件夹中的所有文件 (不包括文件夹),regexs 正则式可以过滤
List< String> listAllFiles(String folderName, FilePathFilter… fileFilters)只查询文件夹子文件夹中的所有文件 (不包括文件夹),fileFilters过滤器过滤
void download(String srcFile, String toFile)1. 下载 文件srcFile=oss/yeb/test/aa.txt, toFile=/sharedata/test/bb/aa.txt 2. 下载文件夹 srcFile=oss/yeb/test/, toFile=/sharedata/kkk/, 将oss/yeb/test/下目录包括子目录下文件下载到/sharedata/kkk/目录下
void upload(String srcFile, String toFile, boolean override)1.上传文件 2.文件夹上传, 将原文件夹下所有文件及子文件上传到目标目录3.override 指定是否覆盖已有文件
void rename(String srcFile, String toFile)文件重名:如果要重命名文件夹,目标文件夹不能是原始文件夹的子目录,如果目标文件已存在,则覆盖目标文件
void copy(String srcFile, String toFile)文件拷贝: 如果是oss存储,只能支持同账号下拷贝
void delete(String fullPath)可以删除文件或文件夹

StorageConfig

属性描述
storageTypenas/oss指定存储类型组件实现了nas/oss, 业务可扩展
paramMap<String, Object>组件给插件透传一些值, 如oss存储实现需要提供账号信息,nas存储只需要指定类型即可

Oss扩展配置

oss存储插件的实现,需要指定oss相关配置信息
param通过指定key透传

StorageConfig storageConfig = new StorageConfig(FileOssStorageContants.STORAGE_OSS);
storageConfig.addParam(OssConfig.OSS_STORAGE_CONFIG_KEY, ossConfig);

ossConfig 参数列表

参数key必填描述
bucketNameoss 命令空间
endpointoss 访问地址
accessKeyIdoss 访问key
accessKeySecretoss 访问密钥
ossTempRoot写文件时OSS本地文件根目录 写文件时会先写在本地再上传到OSS OSS本地目录为:tempRoot + OSS路径,默认值是:/home/admin/logs/ossLocal/
ossBigFileSizeoss大文件上传采用并发上传,默认大文件size是1G
ossAppendSizeLimit追加上传的次数没有限制,文件大小有限制,默认上限为5GB

十二:TemplateLoader

{
  "head":[
    "totalCount|总笔数|Required|Long",
    "totalAmount|总金额|BigDecimal|Required"
  ],
  "body":[
    "seq|流水号",
    "instSeq|基金公司订单号|Required",
    "gmtApply|订单申请时间|Date:yyyy-MM-dd HH:mm:ss",
    "date|普通日期|Date:yyyyMMdd",
    "dateTime|普通日期时间|Date:yyyyMMdd HH:mm:ss",
    "applyNumber|普通数字|BigDecimal",
    "amount|金额|BigDecimal",
    "age|年龄|Integer",
    "longN|长整型|Long",
    "bol|布尔值|Boolean",
    "memo|备注"
  ],
  "tail": [
    "fileEnd|数据文件尾部字符",
    "date|普通日期|Date:yyyyMMdd",
    "amount|金额|BigDecimal"
  ],
  "protocol":"DE",
  // 自定义参数
  "params": {
    "sliceSize": 256,
    "sliceField": "date"
  }
}
方法描述
FileMeta load(FileConfig fileConfig)返回模板文件,可以获取模板中的所有属性和自定义参数
FileMeta load(String templatePath, String templateEncoding)返回模板文件

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

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

相关文章

中低压MOSFET 2N7002KW 60V 300mA 双N通道 SOT-323封装

2N7002KW小电流双N通道MOSFET&#xff0c;电压60V电流300mA&#xff0c;采用SOT-323封装形式。超高密度电池设计&#xff0c;适用于极低的ros (on)&#xff0c;具有导通电阻和最大直流电流能力&#xff0c;ESD保护。可应用于笔记本中的电源管理&#xff0c;电池供电系统等产品应…

CANdelaStudio 使用教程6 编辑DTC

文章目录 DTC的导入导出定义 19 服务的DTC编辑快照数据 DTC的导入导出 DTC导出的文件是 Excel 文件&#xff0c;可以先将这个池子的DTC导出去修改&#xff0c;再导入进来&#xff0c;完成DTC的修改 定义 19 服务的DTC 编辑快照数据

Java Thread 介绍

线程是操作系统调度的最小单元, 也叫轻量级进程。它被包含在进程之中, 是进程中的实际运作单位。 同一进程可以创建多个线程, 每个线程都有自己独立的一块内存空间, 并且能够访问共享的内存变量。 1 线程的分类 在 Java 中, 线程可以分为 2 种 守护线程: 守护线程是为用户线程…

使用Terraform创建Docker镜像和容器

为了实现自动化操作&#xff0c;Terraform需要明确指定所使用的提供者。因此&#xff0c;在主要的main.tf文件中&#xff0c;需要提供提供者的名称、源和版本信息。对于Docker&#xff0c;可以在main.tf中使用以下代码块。 1 Terraform配置模块 使用块和资源创建Terraform脚本…

nodejs+vue+elementui+express青少年编程课程在线考试系统

针对传统线下考试存在的老师阅卷工作量较大&#xff0c;统计成绩数据时间长等问题&#xff0c;实现一套高效、灵活、功能强大的管理系统是非常必要的。该系统可以迅速完成随机组卷&#xff0c;及时阅卷、统计考试成绩排名的效果。该考试系统要求&#xff1a;该系统将采用B/S结构…

C++类与对象(6)—初始化列表、explicit关键字、static成员

目录 一、初始化列表 1、定义 2、注意事项 3、尽量使用初始化列表初始化 4、初始化顺序 二、 explicit关键字 1、定义 2、特点 三、static成员 1、定义 2、特性 3、例题 一、初始化列表 下面这段代码可以正常编译&#xff1a; class A { private:int _a1;//成员…

innovus如何在floorplan view显示所有module

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如题&#xff0c;innovus的图形界面在floorplan view下默认只能显示instance数量超过100个的module&#xff0c;如果要显示更小的module&#xff0c;需要在VIEW-Set Perference…

LeetCode Hot100 394.字符串解码

题目&#xff1a; 给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的…

东胜物流软件 SQL注入漏洞复现

0x01 产品简介 东胜物流软件是一款致力于为客户提供IT支撑的 SOP&#xff0c; 帮助客户大幅提高工作效率&#xff0c;降低各个环节潜在风险的物流软件。 0x02 漏洞概述 东胜物流软件 TCodeVoynoAdapter.aspx、/TruckMng/MsWlDriver/GetDataList、/MvcShipping/MsBaseInfo/Sav…

C语言——I /深入理解指针(二)

一、数组名的理解 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;⽽且 是数组⾸元素的地址&#xff0c;我们来做个测试。 #include <stdio.…

C++ :静态成员

静态成员 静态成员就是在成员变量和成员函数前加上关键字 static &#xff0c;称为静态成员 静态成员分为&#xff1a; 静态成员变量 1.所有对象共享同一份数据 2.在编译阶段分配内存 3.类内声明&#xff0c;类外初始化 静态成员函数 1.所有对象共享同一个函数 2.静态成…

计算机毕业设计springboot+vue高校田径运动会报名管理系统61s38

高校田径运动会管理采用java技术&#xff0c;基于springboot框架&#xff0c;mysql数据库进行开发&#xff0c;实现了首页、个人中心、运动员管理、裁判员管理、场地信息管理、项目类型管理、比赛项目管理、比赛报名管理、比赛成绩管理、通知公告管理、留言板管理、交流论坛、系…

1.ORB-SLAM3中如何保存多地图、关键帧、地图点到二进制文件中

1 保存多地图 1.1 为什么保存(视觉)地图 因为我们要去做导航&#xff0c;导航需要先验地图。因此需要保存地图供导航使用&#xff0c;下面来为大家讲解如何保存多地图。 1.2 保存多地图的主函数SaveAtlas /*** brief 保存地图* param type 保存类型*/ void System::SaveAtlas(…

Kubernetes基础入门:Kubernetes的有关概述

Kubernetes基础入门&#xff1a;Kubernetes的有关概述 一、摘要二、为什么需要 Kubernetes&#xff1f;三、Kubernetes 的功能架构 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、摘要 随着云计算和容器技术的快速发展&#xff0c;现代…

十分钟搭建VScode C/C++运行环境

一、下载配置vscode 1.下载安装VScode 地址&#xff1a;https://code.visualstudio.com/download 下载后&#xff0c;运行安装程序 (VSCodeUserSetup-{version}.exe)。这只需要一分钟。安装程序会将 Visual Studio Code 添加到环境变量中%&#xff0c;可以使用CMD键入“code”…

SQL FULL OUTER JOIN 关键字:左右表中所有记录的全连接解析

SQL RIGHT JOIN关键字 SQL RIGHT JOIN关键字返回右表&#xff08;table2&#xff09;中的所有记录以及左表&#xff08;table1&#xff09;中的匹配记录。如果没有匹配&#xff0c;则左侧的结果为0条记录。 RIGHT JOIN语法 SELECT column_name(s) FROM table1 RIGHT JOIN ta…

Javaweb之Vue组件库Element之Dialog对话框的详细解析

4.3.3 Dialog对话框 4.3.3.1 组件演示 Dialog: 在保留当前页面状态的情况下&#xff0c;告知用户并承载相关操作。其企业开发应用场景示例如下图所示 首先我们需要在ElementUI官方找到Dialog组件&#xff0c;如下图所示&#xff1a; 然后复制如下代码到我们的组件文件的templ…

【Qt】之QSet使用

描述 QSet类是一个模板类&#xff0c;它提供基于散列表的集合。 QSet是Qt的通用容器类之一。它以未指定的顺序存储值&#xff0c;并提供非常快速的值查找。在内部,QSet是作为QHash实现的。 下面是一个带有QString值的QSet示例: QSet<QString> set;插入方式1&#xff…

第1章 爬虫基础

目录 1. HTTP 基本原理1.1 URI 和 URL1.2 HTTP 和 HTTPS1.3 请求1.3.1 请求方法1.3.2 请求的网址1.3.3 请求头1.3.4 请求体 1.4 响应1.4.1 响应状态码1.4.2 响应头1.4.3 响应体 2. Web 网页基础2.1 网页的组成2.1.1 HTML2.1.2 CSS2.1.3 JavaScript 2.2 网页的结构2.3 节点树及节…

【教学类-06-10】20231126 X-Y数字分合-分-下空左

结果展示&#xff1a; 背景需求&#xff1a; 数字分合&#xff0c;这一次空在左侧 代码展示&#xff1a; X-Y 之间的分合题-分-空在右侧 时间&#xff1a;2023年11月26日 21:46 作者&#xff1a;阿夏 import random from win32com.client import constants,gencache from win3…