注意:
需要引入jar包:javadbf-1.12.0.jar
//导入DBF的功能20210527
import java.io.FileInputStream;
import java.io.InputStream;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFReader;
public void 方法名(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=gb2312");
PrintWriter out = null;
JSONObject jsonObject = new JSONObject();
out = response.getWriter();
boolean isTrue=true;
String errMsg="";
InputStream fis = null;
try {
String path = request.getParameter("path");//读取到的DBF路径,注意,路径里只能是/不能是\
// 读取文件的输入流
fis = new FileInputStream(path);
// 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息
DBFReader reader = new DBFReader(fis);
// 调用DBFReader对实例方法得到path文件中字段的个数
int fieldsCount = reader.getFieldCount();
// 取出字段信息
String bt = "";//表头
for (int i = 0; i < fieldsCount; i++) {
DBFField field = reader.getField(i);
bt+=field.getName()+",";
}
//xm,sfzh,tzxl,cjimg,
if(!bt.equals("XM,SFZH,TZXL,CJIMG,")){//dbf必须按固定的顺序
isTrue=false;
jsonObject.put("isTrue",isTrue);
jsonObject.put("msg","DBF顺序必须符合要求:xm,sfzh,tzxl,cjimg");
out.print(jsonObject.toString());
out.flush();
out.close();
return;
}
Object[] rowValues;
// 一条条取出path文件中记录
while ((rowValues = reader.nextRecord()) != null) {
HashMap map = new HashMap();
for (int i = 0; i < rowValues.length; i++) {
map.put(i+"", rowValues[i]);
}
YhxxbDAO.insertRlDbfImp(map);//操作数据库
}
} catch (Exception e) {
isTrue=false;
e.printStackTrace();
} finally {
try {
fis.close();//关流!!
} catch (Exception e) {
}
}
jsonObject.put("isTrue",isTrue);
jsonObject.put("msg","导入成功!");
out.print(jsonObject.toString());
out.flush();
out.close();
return;
}