package com.lf.server.helper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.ogr.DataSource; import org.gdal.ogr.Layer; import org.gdal.ogr.ogr; import java.util.ArrayList; import java.util.List; /** * MDB帮助类 * @author WWW */ public class MdbHelper { private final static Log log = LogFactory.getLog(MdbHelper.class); /** * 获取表名 */ public static List getTabNames(String filePath) { List list = new ArrayList<>(); try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("PGeo"); if (null == driver) { return list; } DataSource dataSource = driver.Open(filePath, 0); if (null == dataSource) { return list; } for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { Layer layer = dataSource.GetLayer(i); list.add(layer.GetName()); layer.delete(); } dataSource.delete(); driver.delete(); } catch (Exception ex) { log.error(ex.getMessage(), ex); } return list; } /** * 读取数据 */ public static List readData(Class clazz, String filePath, String layerName) { List list = new ArrayList<>(); try { org.gdal.ogr.Driver driver = ogr.GetDriverByName("PGeo"); if (null == driver) { return list; } DataSource dataSource = driver.Open(filePath, 0); if (null == dataSource) { return list; } for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) { Layer layer = dataSource.GetLayer(i); if (layer.GetName().equals(layerName)) { GdbHelper.readLayer(clazz, layer, list); break; } layer.delete(); } dataSource.delete(); driver.delete(); } catch (Exception ex) { log.error(ex.getMessage(), ex); } return list; } }