Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * h2spatial is a library that brings spatial support to the H2 Java database.
   *
   * h2spatial is distributed under GPL 3 license. It is produced by the "Atelier SIG"
   * team of the IRSTV Institute <http://www.irstv.fr/> CNRS FR 2488.
   *
   * Copyright (C) 2007-2014 IRSTV (FR CNRS 2488)
   *
   * h2patial is free software: you can redistribute it and/or modify it under the
  * terms of the GNU General Public License as published by the Free Software
  * Foundation, either version 3 of the License, or (at your option) any later
  * version.
  *
  * h2spatial is distributed in the hope that it will be useful, but WITHOUT ANY
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along with
  * h2spatial. If not, see <http://www.gnu.org/licenses/>.
  *
  * For more information, please consult: <http://www.orbisgis.org/>
  * or contact directly:
  * info_at_ orbisgis.org
  */
 
 package org.h2gis.drivers.dbf.internal;
 
 
 import java.io.File;
Manage DBFReader and DBFWriter

Author(s):
Nicolas Fortin
 
 public class DBFDriver implements FileDriver {
     private File dbfFile;
     private DbaseFileReader dbaseFileReader;
     private DbaseFileWriter dbaseFileWriter;

    
Init file header for DBF File

Parameters:
dbfFile DBF File path
Throws:
java.io.IOException
 
     public void initDriverFromFile(File dbfFilethrows IOException {
         initDriverFromFile(dbfFilenull);
     }

    
Init file header for DBF File

Parameters:
dbfFile DBF File path
forceEncoding File encoding to use, null will use the file encoding provided in the file header
Throws:
java.io.IOException
 
     public void initDriverFromFile(File dbfFileString forceEncodingthrows IOException {
         // Read columns from files metadata
         this. = dbfFile;
         FileInputStream fis = new FileInputStream(dbfFile);
          = new DbaseFileReader(fis.getChannel(), forceEncoding);
     }
 
     public void initDriver(File dbfFileDbaseFileHeader dbaseHeaderthrows IOException {
         this. = dbfFile;
         FileOutputStream dbfFos = new FileOutputStream(dbfFile);
          = new DbaseFileWriter(dbaseHeader,dbfFos.getChannel());
     }


    
Write a row

Parameters:
values Content, must be of the same type as declared in the header
 
     public void insertRow(Object[] valuesthrows IOException {
         checkWriter();
         if(values.length != getDbaseFileHeader().getNumFields()) {
             throw new IllegalArgumentException("Incorrect field count "+values.length+" expected "+getFieldCount());
         }
         try {
             .write(values);
         } catch (DbaseFileException ex) {
             throw new IOException(ex.getLocalizedMessage(), ex);
         }
     }
 
     private void checkReader() {
         if( == null) {
             throw new IllegalStateException("The driver is not in read mode");
         }
     }
 
     private void checkWriter() {
         if( == null) {
             throw new IllegalStateException("The driver is not in write mode");
         }
     }

    

Returns:
DBF File path
    public File getDbfFile() {
        return ;
    }

    

Returns:
The DBF file header
        if( != null) {
            return .getHeader();
        } else if( != null) {
            return .getHeader();
        } else {
            throw new IllegalStateException("The driver is not initialised");
        }
    }
    @Override
    public void close() throws IOException {
        if( != null) {
            .close();
        } else if( != null) {
            .close();
        }
    }
    @Override
    public long getRowCount() {
        return .getRecordCount();
    }

    

Returns:
Column count
    public int getFieldCount() {
        return getDbaseFileHeader().getNumFields();
    }
    @Override
    public Object[] getRow(long rowIdthrows IOException {
        final int fieldCount = .getFieldCount();
        Object[] values = new Object[fieldCount];
        for(int fieldId=0;fieldId<fieldCount;fieldId++) {
            values[fieldId] = .getFieldValue((int)rowIdfieldId);
        }
        return values;
    }
New to GrepCode? Check out our FAQ X