20/02/2008, 23:27
|
| | Fecha de Ingreso: febrero-2008
Mensajes: 3
Antigüedad: 16 años, 9 meses Puntos: 0 | |
de un archivo a una base de datos Mira agradezco que te hayas interesado por este tema... mira voy a poner el código:
esta en java asi que espero y le medio entiendan a este lenguaje de todas formas no esta muy complicado....
/**
*
* @author Jose Luis Cetina Avila
*/
public class ArchivoDBF {
public boolean crearArchivoDBFVacio()
{
JOptionPane.showMessageDialog(null,"El programa esta a punto de crear un archivo llamado cetAlumDBF.dbf\nen la dirección: C:\\");
try {
File archivo = new File("c:\\cetAlumDBF.dbf");
if(archivo.exists())
{
int opcion=JOptionPane.showConfirmDialog(null,"Este archivo ya existe.\n¿Desea sobreescribirlo?","",JOptionPane.YES_NO_OPTION);
if(opcion==0)
{
archivo.createNewFile();
if(escribirRegistroDeCabeceraEnElArchivo(archivo.g etAbsolutePath())==true)
{
JOptionPane.showMessageDialog(null,"El archivo se ha creado correctamente en C:\\\nLa tabla tiene las siguientes columnas\nmatricula(cadena),nombre(cadena) y calificacion(numerico)");
return true;
}
else
{
JOptionPane.showMessageDialog(null,"El archivo NO se ha creado");
}
}
else
JOptionPane.showMessageDialog(null,"El archivo NO se ha creado");
}
else
{
archivo.createNewFile();
if(escribirRegistroDeCabeceraEnElArchivo(archivo.g etAbsolutePath())==true)
{
JOptionPane.showMessageDialog(null,"El archivo se ha creado correctamente en C:\\\nLa tabla tiene las siguientes columnas\nmatricula(cadena),nombre(cadena) y calificacion(numerico)");
return true;
}
else
{
JOptionPane.showMessageDialog(null,"El archivo NO se ha creado");
}
}
return false;
} catch (IOException ex) {
JOptionPane.showMessageDialog(null,"No se pudo crear el archivo en C:\\ \n"+ex.toString());
return false; }
}
/**
* <p>Este metodo es el encargado de crear las columnas de la cabecera del archivo DBF,
* se crean
*
* </p>
*
* @param path
* @return
*/
private boolean escribirRegistroDeCabeceraEnElArchivo(String direccionDelArchivo)
{
try {
JDBField columna1 = new JDBField("matricula", 'C', 10, 0);
JDBField columna2 = new JDBField("nombre", 'C', 10, 0);
JDBField columna3 = new JDBField("calif", 'N', 3, 0);
JDBField[] columnas = {columna1, columna2, columna3};
DBFWriter escribir = new DBFWriter(direccionDelArchivo, columnas);
escribir.close();
return true;
} catch (JDBFException ex) {
JOptionPane.showMessageDialog(null,"No se pudo crear el archivo debido a que\nNo se pudo escribir el registro de encabezado del archivo DBF\nError al crear las columnas\n"+ex.toString());
return false;
}
}
/**
* Metodo que abre el DBF para su escritura
* @param nombreDelArchivo String
* @param ajdbfield JDBField[]
* @throws JDBFException
*/
public DBFWriter(String nombreDelArchivo, JDBField ajdbfield[]) throws JDBFException {
stream = null;
recCount = 0;
fields = null;
fileName = null;
dbfEncoding = null;
fileName = nombreDelArchivo;
try {
init(new FileOutputStream(nombreDelArchivo), ajdbfield);
}
catch (FileNotFoundException filenotfoundexception) {
throw new JDBFException(filenotfoundexception);
}
}
/**
* Metodo que inicializa la escritura en el archivo
* @param outputstream OutputStream
* @param ajdbfield JDBField[]
* @throws JDBFException
*/
private void init(OutputStream outputstream, JDBField ajdbfield[]) throws JDBFException {
fields = ajdbfield;
try {
stream = new BufferedOutputStream(outputstream);
writeHeader();
for (int i = 0; i < ajdbfield.length; i++)
writeFieldHeader(ajdbfield[i]);
stream.write(13);
stream.flush();
}
catch (Exception exception) {
throw new JDBFException(exception);
}
}
/**
* Metodo que escribe la cabecera del .dbf
* @throws IOException
*/
private void writeHeader() throws IOException {
byte abyte0[] = new byte[16];
abyte0[0] = 3;
Calendar calendar = Calendar.getInstance();
abyte0[1] = (byte)(calendar.get(1) - 1900);
abyte0[2] = (byte)calendar.get(2);
abyte0[3] = (byte)calendar.get(5);
abyte0[4] = 0;
abyte0[5] = 0;
abyte0[6] = 0;
abyte0[7] = 0;
int i = (fields.length + 1) * 32 + 1;
abyte0[8] = (byte)(i % 256);
abyte0[9] = (byte)(i / 256);
int j = 1;
for (int k = 0; k < fields.length; k++)
j += fields[k].getLength();
abyte0[10] = (byte)(j % 256);
abyte0[11] = (byte)(j / 256);
abyte0[12] = 0;
abyte0[13] = 0;
abyte0[14] = 0;
abyte0[15] = 0;
for(int k=0;k<abyte0.length;k++)
{
System.out.println(abyte0[k]);
}
stream.write(abyte0, 0, abyte0.length);
for (int l = 0; l < 16; l++)
abyte0[l] = 0;
stream.write(abyte0, 0, abyte0.length);
}
/**
* Metodo que escribe la cabecera de un campo del .dbf
* @param jdbfield JDBField
* @throws IOException
*/
private void writeFieldHeader(JDBField jdbfield) throws IOException {
byte abyte0[] = new byte[16];
String s = jdbfield.getName();
int i = s.length();
if (i > 10)
i = 10;
for (int j = 0; j < i; j++)
abyte0[j] = (byte)s.charAt(j);
for (int k = i; k <= 10; k++)
abyte0[k] = 0;
abyte0[11] = (byte)jdbfield.getType();
abyte0[12] = 0;
abyte0[13] = 0;
abyte0[14] = 0;
abyte0[15] = 0;
stream.write(abyte0, 0, abyte0.length);
for (int l = 0; l < 16; l++)
abyte0[l] = 0;
abyte0[0] = (byte)jdbfield.getLength();
abyte0[1] = (byte)jdbfield.getDecimalCount();
stream.write(abyte0, 0, abyte0.length);
}
cualquier archivo puede ser leido por un manejador solo con crear la cabecera del programa...
de todas formas subire un link donde hay un poco de lectura para su mejor comprensión.... |