java 读取,写入 dbf

                                                                                              java 读取,写入 dbf  

 

package com.cramc;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFReader;
import com.linuxense.javadbf.DBFWriter;

public class Rwdbf {

 public static void readDBF(String path) 

    {
 
       InputStream fis = null;
        try
        {
            //读取文件的输入流
            fis  = new FileInputStream(path);
            //根据输入流初始化一个DBFReader实例,用来读取DBF文件信息
            DBFReader reader = new DBFReader(fis);
            //调用DBFReader对实例方法得到path文件中字段的个数
            int fieldsCount = reader.getFieldCount();
           System.out.println("字段数:"+fieldsCount);
            //取出字段信息 
           System.out.print("fallPrice"+ '\t');
            System.out.print("TOPPRICE"+ '\t');
            for( int i=0; i<fieldsCount; i++)  
            { 
              DBFField field = reader.getField(i);
              if(field.getName().equals("HQZRSP")){System.out.print(field.getName()+ '\t');}
             
              if(field.getName().equals("HQZGCJ")){System.out.print(field.getName()+ '\t');}
              if(field.getName().equals("HQZDCJ")){System.out.print(field.getName()+ '\t');}
             

             // System.out.print(field.getName()+ '\t');
            
            }   
          
            System.out.println('\n');
            Object[] rowValues; 
            //一条条取出path文件中记录 
            while((rowValues = reader.nextRecord()) != null)
            { 
              for( int i=0; i<rowValues.length; i++)
              {  
              // System.out.println("index:"+ rowValues.length);
//               int sum=i+1;
//               int num=sum%35;

             
               // if(num==0){
               if(i==2){ 
                String  cloPrices= rowValues[i].toString();
                            
                  double topPrices=Double.parseDouble(cloPrices) * 1.1;  
                  double fallPrices=Double.parseDouble(cloPrices) * 0.90;
               
                 
                  double pricefall=fallPrices -9;               
                  double pricetop=topPrices -9;
                 
                 BigDecimal bfall = new BigDecimal(pricefall);
                  double   pricefa   =   bfall.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
               BigDecimal btop = new BigDecimal(pricetop);
               double   priceto   =  btop.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
              System.out.print( pricefa +'\t');
              System.out.print("_______________________________");
                System.out.print(priceto +'\t');
//                int sum=i;
//                      int num=sum%3;
              }
                 //if(rowValues[i].toString()==String.valueOf(2) || rowValues[i].toString()==String.valueOf(8)|| rowValues[i].toString()==String.valueOf(9)){
               if(i==2){ 
                BigDecimal bdto = new BigDecimal(Double.parseDouble(rowValues[i].toString()));
                double   pricebdto   =  bdto.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
                 System.out.print(pricebdto +'\t');             
                 
//                 int sum=i;
//                       int num=sum%3;
               } 
//                 if(rowValues[i].toString().indexOf("E")>0)
//                 {
//                  BigDecimal bd = new BigDecimal(rowValues[i].toString());
//               System.out.println(bd.toPlainString() + '\t');
//                 }
                // else{
                       if(i==8 ){  
                  System.out.print(rowValues[i].toString()+'\t');
                       }
                 
                  if(i==9){ 
                   System.out.println(rowValues[i].toString() +'\t');
                  }
                 
                
                  }
                // }
              
                 }
             //  }
              // else{
//               if(rowValues[i].toString()==String.valueOf(2) || rowValues[i].toString()==String.valueOf(8)|| rowValues[i].toString()==String.valueOf(9)){ 
//               
//               
//                else{
//                 System.out.print(rowValues[i].toString() + '\t');
//                }
               // }  //System.out.print(rowValues[i].toString() + '\t');
              // }
              // }
        
             
             
          } 
          catch(Exception e)  
          { 
          e.printStackTrace();
          }
          finally
          { 
          try{ 
               fis.close();
          }catch(Exception e){}
          }
    } 

 

 private static double valueOf(String string) {
 // TODO Auto-generated method stub
 return 0;
}

 

public static void writeDBF(String path)
 {

  OutputStream fos = null;
  try
  { 
      //定义DBF文件字段 
      DBFField[] fields = new DBFField[3];
      //分别定义各个字段信息,setFieldName和setName作用相同,
      //只是setFieldName已经不建议使用 
      fields[0] = new DBFField(); 
      //fields[0].setFieldName("emp_code");
      fields[0].setName("semp_code"); 
      fields[0].setDataType(DBFField.FIELD_TYPE_C); 
      fields[0].setFieldLength(10); 

      fields[1] = new DBFField(); 
      //fields[1].setFieldName("emp_name");
      fields[1].setName("emp_name"); 
      fields[1].setDataType(DBFField.FIELD_TYPE_C); 
      fields[1].setFieldLength(20); 

      fields[2] = new DBFField(); 
      //fields[2].setFieldName("salary");
      fields[2].setName("salary");
      fields[2].setDataType(DBFField.FIELD_TYPE_N); 
      fields[2].setFieldLength(12); 
      fields[2].setDecimalCount(2); 

      //DBFWriter writer = new DBFWriter(new File(path)); 

      //定义DBFWriter实例用来写DBF文件 
      DBFWriter writer = new DBFWriter();
      //把字段信息写入DBFWriter实例,即定义表结构
      writer.setFields(fields); 
      //一条条的写入记录 
      Object[] rowData = new Object[3];
      rowData[0] = "1000"; 
      rowData[1] = "John"; 
      rowData[2] = new Double(5000.00);
      writer.addRecord(rowData); 

      rowData = new Object[3];
      rowData[0] = "1001";
      rowData[1] = "Lalit";
      rowData[2] = new Double(3400.00); 
      writer.addRecord(rowData); 

      rowData = new Object[3];
      rowData[0] = "1002"; 
      rowData[1] = "Rohit";
      rowData[2] = new Double(7350.00);
      writer.addRecord(rowData); 

      //定义输出流,并关联的一个文件 
      fos = new FileOutputStream(path);
      //写入数据 
      writer.write(fos); 

      //writer.write();
  }catch(Exception e) 
  { 
      e.printStackTrace(); 
  } 
  finally
  { 
      try{ 
      fos.close();
      }catch(Exception e){}
  }
 }

 public static void main(String[] args){
 
//     BigDecimal bd = new BigDecimal( 3.392824555E7);
//     String   f1   =   bd.setScale(1,   BigDecimal.ROUND_HALF_UP).toString();
//  
//     System.out.println(f1 + '\t'+"zhuanhuan");
 
 
 
  Rwdbf rdbf=new Rwdbf();
  String path ="E:\\SJSHQ.DBF";
  rdbf.readDBF(path);
//  try {
//   InputStream fis = new FileInputStream(path);
//   DBFReader reader = new DBFReader(fis);
//   int fieldsCount = reader.getFieldCount();
//            System.out.println("字段数:"+fieldsCount);
//
//            DBFField[] df = new DBFField[fieldsCount+2];
//            for( int i=0; i<fieldsCount; i++)  
//            { 
//              df[i] = reader.getField(i);
//              System.out.println("field"+i+":"+df[i].getName());
//            }
//            df[fieldsCount] = new DBFField();
//            df[fieldsCount].setName("add1");
//            df[fieldsCount].setDataType(DBFField.FIELD_TYPE_C);
//            df[fieldsCount].setFieldLength(10);
//            df[fieldsCount+1] = new DBFField();
//            df[fieldsCount+1].setName("add2");
//            df[fieldsCount+1].setDataType(DBFField.FIELD_TYPE_C);
//            df[fieldsCount+1].setFieldLength(10);
//
//            DBFWriter writer = new DBFWriter();
//            writer.setFields(df);
//
//            Object[] rowValues;
//            Object[] rowValues1 = new Object[fieldsCount+2];
//            //一条条取出path文件中记录 
//            while((rowValues = reader.nextRecord()) != null)
//            {
//              for(int i=0;i<fieldsCount;i++){
//               rowValues1[i] = rowValues[i];
//              }
//              rowValues1[fieldsCount]="x";
//              rowValues1[fieldsCount+1]="xx";
//              writer.addRecord(rowValues1);
//            }
//
//          
//            path ="E:\\tmp\\2\\test2.dbf";
//            OutputStream fos = new FileOutputStream(path);
//          //写入数据 
//          writer.write(fos); 
//
//          System.out.println("OVER");
//
//          
//  } catch (FileNotFoundException | DBFException e) {
//   // TODO Auto-generated catch block
//   e.printStackTrace();
//  }
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值