首页 > 其他分享 >对文件数据根据分隔符进行读取操作

对文件数据根据分隔符进行读取操作

时间:2023-09-28 21:11:48浏览次数:27  
标签:文件 实体类 String null entity 分隔符 Entity 读取

需求:

现在有个需求,当前数据是通过文件传输,文件格式为某个表固定字段里的内容,,每行数据代表一条完整数据,是由0x0f作为分隔符,分隔符之间的字段内容是不定长的,在Java代码中,有什么办法可以读取这个文件,并且取到字段中的内容存到指定实体类接收,用于后续金额对比逻辑操作

要读取具有固定字段和变长字段的文件,并将字段内容存储到指定的实体类中,您可以按照以下步骤进行操作:

  1. 创建一个实体类,用于存储文件中的字段内容。在实体类中定义与文件中字段对应的属性。
public class Entity {
    private String field1;
    private String field2;
    // 其他字段...
    
    // 构造方法、getter和setter方法
}
  1. 使用BufferedReaderInputStreamReader来读取文件,并根据分隔符将每行数据拆分为字段。
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("file.txt"), "UTF-8"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        String[] fields = line.split("\u000F"); // 使用0x0F作为分隔符,注意需要转义
        
        // 创建实体类对象并赋值
        Entity entity = new Entity();
        entity.setField1(fields[0]);
        entity.setField2(fields[1]);
        // 设置其他字段的值...
        
        // 进行金额对比逻辑操作
        // ...
    }
} catch (IOException e) {
    e.printStackTrace();
}

在上述代码中,我们使用BufferedReader逐行读取文件内容,并使用split方法将每行数据按照分隔符拆分为字段数组。然后,我们创建一个实体类对象,并将拆分的字段值设置到相应的属性中。

随后,您可以在注释部分编写金额对比逻辑操作的代码,根据需要进行金额对比操作。

请注意,上述代码仅为示例,您需要根据实际的文件格式和字段定义进行适当的修改。另外,还需要处理异常情况和关闭文件流的操作。


接着上文,既然是字段是不定长的,那两个分隔符之间没有值为空这样的话,程序会不会报错
如果两个分隔符之间没有值为空,程序不会报错。它会将空字符串或者null值分配给对应的字段。你可以在实体类中将这些字段声明为字符串类型,并在后续的金额对比逻辑操作中进行必要的判断和处理。以下是一个简单的示例代码,演示了如何处理空字符串或null值:

public class Entity {
    private String field1;
    private String field2;
    
    // getter和setter方法
    
    // 其他逻辑操作方法
}

public class Main {
    public static void main(String[] args) {
        String line = "value1,value2,,value4";
        String[] values = line.split(",");
        
        Entity entity = new Entity();
        entity.setField1(values[0]);
        entity.setField2(values[1]);
        
        if (values[2] != null && !values[2].isEmpty()) {
            // 对空字符串或null值进行处理
        }
        
        entity.setField4(values[3]);
        
        // 后续的金额对比逻辑操作
    }
}

在上面的示例代码中,如果第三个字段为空或null,可以在if语句中进行必要的处理。你可以根据实际需求来编写相应的逻辑操作。


我还想问下,这个0x0f分隔符,到底是什么,为什么在有的服务器上显示为^0呢
0x0f是一种十六进制的表示形式,它代表了一个特殊字符,被称为"Device Control 1"(设备控制1)。这个字符在ASCII码中有一个对应的值,即十进制的15。

在某些服务器上,0x0f字符可能会被显示为0。这是因为在早期的计算机系统中,一些字符没有直接的可见表示形式,因此使用了一些转义字符来表示它们。""符号是其中之一,它用于表示控制字符。"^0"就是表示十六进制的0x0f字符。

总的来说,无论是显示为0x0f还是^0,它们都是表示同一个特殊字符,用于在文件中分隔字段内容。在处理这种文件时,您需要使用该字符作为分隔符来将字段内容提取出来。


标签:文件,实体类,String,null,entity,分隔符,Entity,读取
From: https://www.cnblogs.com/chentianxiang180/p/17736496.html

相关文章

  • Spring boot 处理大文件上传完整代码
    这篇文章主要介绍了Spring boot 处理大文件上传,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 在Web上处理大文件上传时,可以使用以下方法来优化和处理大文件的上传:1.前端处理:在前端使用合适的文件上传库或组件,例......
  • Linux脚本实现文件系统使用率大于90%报警
    Linux脚本实现文件系统使用率大于90%报警disk_used.sh#!/bin/bash#Author:ztj#Date:2023/5/6#Description:磁盘使用率大于90%报警NULLFILE=65disk_filesystem=/tmp/filesystem.txt>$disk_filesystemdf-h|grep-v"Filesystem"|grep-E"^/dev">$disk_filesys......
  • Linux文件解压脚本实现
    根据不同的文件结尾后缀对文件进行解压缩extract_file.sh#!/bin/bash#Author:ztj#Date:2023/5/6#Description:extractcompressedfileNOARGS=65NOTFOUND=66Out_Directory=/tmpif[$#-eq0];thenecho"Usage:`basename$0`filename">&2exit$NOARGSfifi......
  • postman升级后文件丢失/登录后无文件解决
     找到C盘用户admin账号下AppData文件夹,按照下面路径找到如下如所示的文件C:\Users\Admin\AppData\Roaming\Postman 找到最新的一次记录 将这个最新的json文件导入到postman中即可。 ......
  • Ubuntu压缩文件夹zip命令
    一、安装zip命令如果您的Ubuntu系统没有安装zip命令,可以使用以下命令进行安装:sudoapt-getupdatesudoapt-getinstallzip输入密码并等待安装完成。二、压缩单个文件夹在命令行中,使用zip命令压缩单个文件夹非常简单。以下是基本的命令格式:zip-r压缩包名.zip要压缩的文件夹路......
  • 怎么保护苹果手机移动应用程序ios ipa文件中的代码?
    ​目录              前言          代码混淆步骤1.选择要混淆保护的ipa文件2.选择要混淆的类名称3.选择要混淆保护的函数,方法4.配置签名证书5.混淆和测试运行 前言在当今移动应用市场竞争激烈的环境中,代码保护功......
  • Python 合并Excel文件(Excel文件多sheet)
    一、Python合并Excel文件多sheet《方法1》importosimportpandasaspd#指定包含Excel文件的文件夹路径folder_path='C:\\Users\\Admin\\Desktop\\数据核对'#获取文件夹中的所有Excel文件excel_files=[fileforfileinos.listdir(folder_path)iffile.endswith......
  • Spring Boot 实现文件上传
    在实际项目中,文件上传是很多项目必不可少的一个功能。那么在SpringBoot项目中又是如何来实现文件上传功能的呢?一般来说,上传的文件可以保存到项目根目录下的某一文件夹中,但这样做显然是不太合适的。因此我们选择将文件上传到专门的文件服务器中。很多云计算厂商都提供文件存......
  • Python 批量合并csv文件
    importpandasaspdimportglobimportos#获取所有CSV文件的路径file_paths=glob.glob("C:\\Users\\Admin\\Desktop\\数据核对\\*.csv")#使用glob.glob函数获取指定目录下所有以.csv为扩展名的文件路径,并将结果存储在file_paths列表中print(file_paths)#打印出这......
  • DICOM 文件传输 基于DCMTK
    DcmSCP:dicomserviceclassprovider,相当于服务器DcmSCU:dicomserviceclassuser,相当于客户端DIMSE:dicommessageserviceelement,dicom连接中传递的消息单元 一、建立连接DICOM网络连接建立在TCP基础上,使用IP地址和端口号通信。1. SCP开始监听端口2. 初始化TCP连接3.......