日期:2014-05-16  浏览次数:20517 次

java读取DBF文件

前段时间项目中用到了读取DBF文件,原本以为DBF文件可以用excel打开,所以想当然的用JXL解析excel的方法读取DBF文件,在解析过程中果然报了异常。于是从网上查了下、有专门的读取DBF的工具,我用的是javadbf.jar。具体的java操作DBF文件代码如下:public static void readDBF(String path)

	   
    {    
       InputStream fis = null;    
   
        try     
   
        {    
   
            //读取文件的输入流    
   
            fis  = new FileInputStream(path);    
   
            //根据输入流初始化一个DBFReader实例,用来读取DBF文件信息    
   
            DBFReader reader = new DBFReader(fis);     
            //设置编码方式,防止中文乱码
            reader.setCharactersetName("GB2312"); 
            //调用DBFReader对实例方法得到path文件中字段的个数    
   
            int fieldsCount = reader.getFieldCount();    
            
            for( int i=0; i<fieldsCount; i++)     
   
            {    
   
              DBFField field = reader.getField(i);    
   
              System.out.println(field.getName());
              fieldList.add(field.getName());
   
            }    
           
			
            Object[] rowValues;    
   
            //一条条取出path文件中记录    
   
            while((rowValues = reader.nextRecord()) != null)     
   
            {    
	              for( int i=0; i<rowValues.length; i++)     
	   
	              {   
				String currentCol = rowValues[i].toString().trim();
				//因为dbf文件中yyyy-MM-dd格式读取出来的日期格式为:Wed Sep 07 21:54:58 CST 2011
                		SimpleDateFormat sdfTemp = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US);
                			
                		Date date1 = sdfTemp.parse(currentCol);
                		DateFormat df = new SimpleDateFormat("yyyyMMdd"); 
                		currentCol = df.format(date1);
                		
	                
	              }    
            }    
            
   
          }    
          catch(Exception e)     
   
          {    
   
          e.printStackTrace();    
   
          }    
   
          finally   
   
          {    
   
          try{    
   
               fis.close();    
   
          }catch(Exception e){}    
   
          }  
   
 }    
?