Exercises Java with Examples-
Practice Exercises Java 4,5 5 302940

DBF extractor - Practice Exercises Java


Lesson 8:

File management


Exercise 8.37:

DBF extractor


Objetive:

Crear un programa que muestre la lista de los campos que hay almacenados en un fichero DBF.

El formato DBF es el usado por el antiguo gestor de bases de datos dBase, y soportado como formato de exportación por muchas herramientas actuales, como Excel o Access.

Los archivos DBF se dividen en dos partes: una cabecera que almacena información sobre la estructura del archivo y una zona de datos.

La zona de cabecera se separa de la zona de datos con el carácter CR (avance de carro, número 13 del código ASCII). A su vez la cabecera se divide en dos partes: la primera ocupa 32 bytes y contiene información general sobre el archivo, mientras que la segunda contiene información sobre cada campo y está formada por tantos bloques de 32 bytes como campos tenga la tabla.

La cabecera general del archivo es:

Posicion Tamaño (bytes) Descripcion

1 1 Nro. que identifica el producto con el fue creada la tabla
2 3 Fecha ultima actualizacion año/mes/dia
5 4 Nro.total de registros de la tabla (en orden inverso)
9 2 Longitud total de la cabecera incluido CR
11 2 Longitud del registro (incluye el caracter de marca de borrado)
13 2 Reservados
15 1 Flag de Transaccion activa
16 1 Flag de encriptacion
17 12 Indicadores para el uso en red de area local
29 1 Flag de fichero de indica .MDX
30 3 Reservados

La cabecera de cada campo es:

Posicion Tamaño (bytes) Descripcion

1 11 Nombre de Campo
12 1 Tipo de campo (C,D,F,L,M,N)
13 4 Reservados
17 1 Longitud de campo
18 1 Numero de decimales si el campo numerico,tambien usado para campos de caracteres de gran tamaño
19 2 Reservados
21 1 Flag de area de trabajo
22 10 Reservados
32 1 Flag de inclusion en el indice .MDX

(Se puede observar que la cantidad de campos no se indica en la cabecera, pero se puede deducir, sabiendo la longitud de la cabecera, que está en las posiciones 9 y 10, y el tamaño de cada bloque de cabecera, que es de 32 bytes).


Source Code:


public class Main
{
	public static void main()
	{
		java.io.FileInputStream fileDBF = File.OpenRead("example.dat");
		byte[] data = new byte[32];

		int amountRead = fileDBF.read(data, 0, 32);

		if (amountRead != 32)
		{
			System.out.println("Error!!!");
		}
		else
		{
			size = data[8] + data[9] * 256;
			int numberFields = size / 32 - 1;

			for (int i = 0; i < numberFields; i++)
			{
				amountRead = fileDBF.read(data, 0, 32);

				String nameField = "";
				for (int j = 0; j < 11; j++)
				{
					nameField += (char)data[j];
				}

				System.out.printf("Name: %1$s" + "\r\n", nameField);
			}

			fileDBF.close();
		}
	}
}
Exercisey 8.37

Share Now:


Google Ads





Privacy Policy:



Google uses associated advertising companies to serve ads when it visits our website. These companies may use the information they obtain from your visits to this and other websites (not including your name, address, email address, or phone number) to provide you with announcements about products and services that interest you. If you would like to learn more about this practice and know your options to prevent these companies from using this information. Click in... Privacy and Terms of Google.

Cookies

This site uses Google cookies to provide its services, to personalize advertisements and to analyze traffic. Google receives information about your use of this website. More information in... Privacy and Terms of Google.