使用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;
}

相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
2月前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
|
2月前
|
Java
利用GraalVM将java文件变成exe可执行文件
这篇文章简明地介绍了如何使用GraalVM将一个简单的Java程序编译成exe可执行文件,首先通过javac命令编译Java文件生成class文件,然后使用native-image命令将class文件转换成独立的exe文件,并展示了如何运行这个exe文件。
71 0
利用GraalVM将java文件变成exe可执行文件
|
19天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
42 2
|
28天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
29天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
37 4
|
1月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
1月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
2月前
|
Java
用java搞定时任务,将hashmap里面的值存到文件里面去
本文介绍了如何使用Java的`Timer`和`TimerTask`类创建一个定时任务,将HashMap中的键值对写入到文本文件中,并提供了完整的示例代码。
38 1
用java搞定时任务,将hashmap里面的值存到文件里面去
|
2月前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
66 2