dbf文件读与写

2024-03-16 18:38
文章标签 dbf

本文主要是介绍dbf文件读与写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DBF是dBase和FoxPro软件的数据表文件
maven依赖

<!-- https://mvnrepository.com/artifact/com.github.albfernandez/javadbf -->
<dependency><groupId>com.github.albfernandez</groupId><artifactId>javadbf</artifactId><version>1.9.4</version>
</dependency>

dbf文件读取:

 /*** 读取dbf文件内容* @param path dbf文件路径 + 名称* @return*/public static List<Map<String, String>> readDBF(String path) {List<Map<String, String>> result = new ArrayList<>();InputStream fis = null;try {fis = new FileInputStream(path);DBFReader reader = new DBFReader(fis);// 处理中文乱码reader.setCharactersetName("GBK");Object[] rowValues;// 一条条取出path文件中记录while ((rowValues = reader.nextRecord()) != null) {int j = 0;Map<String, String> map = new HashMap<>();for (int i = 0; i < rowValues.length; i++) {DBFField field = reader.getField(j);log.info("字段名称[{}],数据[{}]", field.getName(), rowValues[i]);map.put(field.getName(), rowValues[i] + "");j++;}result.add(map);}log.info(JSON.toJSONString(result));} catch (Exception e) {e.printStackTrace();} finally {try {fis.close();} catch (Exception e) {e.printStackTrace();}}return result;}

dbf文件的写入:

/*** 生成dbf文件* @param dbfFilePath [{"filedName":"xxx","length":"xx"},{"filedName":"xxx","length":"xx"}]* @param filedList 数据  数据格式:[[xx,xx,...],[xx,xx,...]]* @param dataList*/public static void writeDbfFile(String dbfFilePath, List<Dbf> filedList, List<List<String>> dataList) {if (filedList == null) {log.info("filedList不能为空");return;}if ("dbf".equals(dbfFilePath.lastIndexOf("."))) {throw new BusinessException("文件后缀有误");}OutputStream fos = null;DBFField fields[] = new DBFField[filedList.size()];for (int i = 0; i < filedList.size(); i++) {Dbf dbf = filedList.get(i);fields[i] = new DBFField();fields[i].setName(dbf.getFiledName());fields[i].setType(DBFDataType.CHARACTER);// 这里必须定义,指明长度fields[i].setLength(dbf.getLength());}try {DBFWriter writer = new DBFWriter();writer.setFields(fields);if (dataList != null && !dataList.isEmpty()) {dataList.forEach(data -> {Object[] rowData = new Object[dataList.size()];for (int i = 0; i < data.size(); i++) {rowData[i] = data.get(i);}writer.addRecord(rowData);});}fos = new FileOutputStream(dbfFilePath);// 解决中文乱码writer.setCharactersetName("GBK");// 写入数据writer.write(fos);log.info("dbf[{}]文件生成完成", dbfFilePath);} catch (Exception e) {e.printStackTrace();} finally {try {fos.close();} catch (Exception e) {e.printStackTrace();}}}

我的这两个方法都是写在dbfUtil类中,在这个类中我又写了一个内部类:

@Data
public static class Dbf{/** 字段名称 */private String filedName;/** 字段长度 */private int length;}

整理不易,欢迎指正。

这篇关于dbf文件读与写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816354

相关文章

Java解析之纠结的DBF文件

[b][color=green][size=x-large]明天,持续更新Lucene系列博文,欢迎收看! Lucene群交流:324714439 下面进入正题 [/size][/color][/b] [b][color=green][size=x-large]最近客户提了个新的需求,需要我们的程序支持如下几种文件的解析 [table] |编号|文件格式 |1|XML |

DBF文件初步了解(二)——DBF数据导出代码实现

上篇博客中主要记录一些关于DBF数据文件的概念性知识。包括DBF的数据结构和用处。在这里记录一下在C#中导出DBF文件的实现方式。     DBF文件也是一种数据库文件,我们导出DBF文件也就是将数据库中的数据导出到DBF文件中。所以最主要的就是讲DataTable转换成DBF,包括数据和数据类型。    <span style="font-size:24px;">private boo

DBF文件的初步了解(一)

DBF文件格式是一种比较“古老”的数据库文件格式了。要不是最近项目中需要,笔者恐怕到今天也不曾听说过DBF文件格式。 作用:DBF数据库格式是DOS系统中的dBase数据库和FoxPro数据库所使用的数据库格式。如今,如果电脑上没有安装这两款软件,可以使用Excel打开。 数据结构 1. 数据文件.DBF结构分析  数据库文件由头记录(header record)和数据记录(

postgis导入shp数据时“dbf file (.dbf) can not be opened.“

作者进行矢量数据导入数据库中出现上述报错 导致报错原因 导入的shp文件路径太深导入的shp文件名称或路径中有中文将需要导入数据的shp 文件、dbf 文件、prj 等文件放在到同一个文件夹内,且名字要一致;导入失败:         导入成功:

对DBF表进行加密或解密

*前提:被操作的表如果已经打开,一定要先关闭 *---------------------------------------DBF_JM('temp.dbf',1) &&加密DBF_JM('temp.dbf',0) &&解密FUNCTION DBF_JM PARAMETERS filename,jm IF AT('.',filename)=0 filename=filename+'.dbf'

arcgis-shp文件属性表导出为dbf或txt

arcgis中shp文件的属性表可导出为dbf或txt,往常都是导出为dbf,再拖动到excel中打开, 今天发现如果属性表中有中文导出为bdf后,再拖动到excel打开的话,中文会变成乱码。 试着导出txt,再导入excel,中文就不会变成乱码了。

使用C#读取dbf行情文件

由于历史的原因,我国的上交所和深交所使用的还是dbf文件来进行行情数据的分发,关于卫星报盘系统,可以参考:http://maltig.itpub.net/post/12165/195151 这个博客中关于证券公司信息化的文章写的还是相当不错的。上交所使用的是show2003.dbf文件,而深交所使用的是SJSHQ.DBF,这种文件可以使用Visual FoxPro直接打开,查看其内容。接下来说说怎

手动删除oracle数据库DBF文件,无法正常使用数据库, 可以尝试将删除的DBF数据文件进行离线后重试

手动删除oracle数据库DBF文件时,将无法正常启动数据库, 可以尝试将删除的DBF数据文件进行离线后重试: 1.alter database open 命令可以提示数据文件序号 2.alter database datafile 10 offline drop 命令可以根据文件序号将文件离线.

pyhon中File对象的属性及如何读取DBF文件

pyhon中File对象的属性 一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。 以下是和file对象相关的所有属性的列表: 如下实例: #!/usr/bin/python# 打开一个文件fo = open("foo.txt", "wb")print "Name of the file: ", fo.nameprint "Closed or

【Python】dbf批量转为excel(非arcpy和arcpy转法)

现在我有一些dbf文件,需要将其转为excel格式,利用python进行处理,主要有两类方法,python 3.x环境下转,或是在python 2.7环境下转。在gdf库中的dbf貌似只能用arcpy转法。 一、非arcpy转法 多个dbf合并到一个excel不同sheet中 import pandas as pdfrom dbfread import DBF# 定义dbf文件夹路径和输出