📄 readdbfaction.java
字号:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.dbf.struts.action;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.dbf.struts.form.ReadDBFForm;
import com.linuxense.javadbf.*;
/**
* MyEclipse Struts
* Creation date: 06-11-2008
*
* XDoclet definition:
*/
public class ReadDBFAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String mode=request.getParameter("mode");
if(mode.equals("upload_dbf")){
return executeUploadDBF(mapping,form,request,response);}
else return null;
}
private ActionForward executeUploadDBF(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
ReadDBFForm readDBFForm = (ReadDBFForm) form;// TODO Auto-generated method stub
FormFile map_file = readDBFForm.getMap_file();//取得上传的文件
try
{
//建立存放上传文件和解析文本的文件夹,文件夹建立在webapp下对应的工程目录里
String filePath = this.getServlet().getServletContext().getRealPath("/");// +"../../a";
String path = filePath + "data\\";
java.io.File dir = new java.io.File(path);
if(dir.exists()){//检查Sub目录是否存在
}else{
dir.mkdir();//建立Sub目录
}
//操作地图文件,对地图文件(.dbf)进行解析
if(map_file.getFileSize()>0){
InputStream stream = map_file.getInputStream();//把文件读入
OutputStream bos = new FileOutputStream(path + map_file.getFileName());//建立一个上传文件的输出流
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1)
{
bos.write(buffer, 0, bytesRead);//将文件写入服务器
}
bos.close();
stream.close();
//解析dbf文件并写入文本文件(.txt格式)
java.io.File dbf_file = new java.io.File(path, map_file.getFileName() + ".txt");
java.io.FileWriter dbf_writer = new java.io.FileWriter(dbf_file);
try {
// create a DBFReader object
InputStream inputStream = map_file.getInputStream();
DBFReader reader = new DBFReader(inputStream);
int numberOfFields = reader.getFieldCount(); //得到dbf文件中区域数目(列数)
int count = reader.getRecordCount(); //得到dbf文件中记录数目(行数)
dbf_writer.write(count + "\n"+ "\n"); //将dbf文件中记录数目写入文本文件
Object []rowObjects;
while( (rowObjects = reader.nextRecord()) != null) {
for( int i=0; i<rowObjects.length; i++) {
String row_ob = rowObjects[i].toString();
row_ob = row_ob.trim(); //去掉首尾空格
try {
row_ob = new String(row_ob.getBytes("ISO8859-1"),"gb2312"); //中文字符转换
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//提取每一行中某几项数据,可根据具体情况修改,在此仅举一例(取每行第1、3、5项内容)
if(i % numberOfFields == 0 || i % numberOfFields == 2 || i % numberOfFields == 4)
dbf_writer.write(row_ob + "\n"); //将dbf中的内容写入文本文件
}
}
dbf_writer.close();
inputStream.close();
}catch( DBFException e) {
System.out.println( e.getMessage());
}
}
} catch (Exception e)
{
System.err.print(e);
}
return mapping.findForward("success");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -