使用Java读写dbf文件【附源代码】

简介: 使用Java读写dbf文件【附源代码】

主要代码如下:

pom.xml文件中引入所需依赖;


com.github.albfernandez
javadbf
1.9.2

创建返回实体类 DBFInfo.java

/**

  • @author 公众号: SimpleMemory
  • @version 1.0.0
  • @ClassName DBFInfo.java
  • @Description DBF文件封装实体类
  • @createTime 2022年02月26日 20:37:00
    */
    @Data
    public class DBFInfo {
    // 字段数量
    private Integer fieldCount;
    // 字段名
    private String[] fieldName;
    // 记录
    List> rowList;
    //记录数量
    Integer recordCount;
    }
    核心实现类

/**

  • @author 公众号: SimpleMemory
  • @version 1.0.0
  • @ClassName DBFUtils.java
  • @Description 读取DBF文件工具类
  • @createTime 2022年02月26日 20:27:00
    /
    @Slf4j
    public class DBFUtils {
    /*

    • 读取DBF文件
      *
    • @param filePath 文件路径
    • @param charsetName
    • @return
    • @throws IOException
      */
      public static DBFInfo readDBFFile(String filePath, String charsetName) throws IOException {
      DBFInfo dbfInfo = new DBFInfo();
      FileInputStream inputStream = null;
      DBFReader dbfReader = null;
      Object[] rowVales = null;
      List> rowList = new ArrayList<>();
      File file = new File(filePath);
      if (!file.exists()) {

       log.error("文件路径:{},该文件不存在!", filePath);
       return dbfInfo;
      

      }
      try {

       log.debug("开始读取DBF文件,文件路径为: {}", filePath);
       inputStream = new FileInputStream(filePath);
       dbfReader = new DBFReader(inputStream, Charset.forName(charsetName), false);
      
       // 字段数量
       int fieldCount = dbfReader.getFieldCount();
       log.debug("读取DBF文件,字段数量为:{}个!", fieldCount);
      
       // 记录数量
       int recordCount = dbfReader.getRecordCount();
       log.debug("读取DBF文件,数据量为:{}个!", recordCount);
      
        String[] fieldName = new String[fieldCount];
        for (int i = 0; i < fieldCount; i++) {
            fieldName[i] = dbfReader.getField(i).getName();
        }
        dbfInfo.setFieldCount(fieldCount);
        dbfInfo.setFieldName(fieldName);
        dbfInfo.setRecordCount(recordCount);

        while ((rowVales = dbfReader.nextRecord()) != null) {
            Map<String, String> rowMap = new HashMap<String, String>();
            for (int i = 0; i < rowVales.length; i++) {
                rowMap.put(dbfReader.getField(i).getName(), String.valueOf(rowVales[i]).trim());
            }
            rowList.add(rowMap);
        }
        if (CollectionUtils.isNotEmpty(rowList)) {
            dbfInfo.setRowList(rowList);
        }
        return dbfInfo;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (null != inputStream) {
            inputStream.close();
        }
        if (null != dbfReader) {
            dbfReader.close();
        }
    }
    return dbfInfo;
}

相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
101 9
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
110 2
|
3月前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
552 2
|
22天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
103 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
103 34
|
2天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
13 0
|
2月前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
55 3
|
2月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
2月前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
227 2
|
2月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
95 4