⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readdbfaction.java

📁 在MyEclipse平台下
💻 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 + -