Mostrar Campos En Un Archivo DBF En C#

En este ejercicio, creará un programa que lee un archivo DBF y muestra una lista de sus campos. El formato de archivo DBF, utilizado por el antiguo gestor de bases de datos dBase, aún es compatible con herramientas modernas como Excel y Access para la exportación de datos. El archivo consta de un encabezado, que contiene detalles sobre su estructura, y una sección de datos. Se centrará en extraer información del encabezado, en particular las descripciones de los campos.



Grupo

Manejo de archivos en C#

Objectivo

1. Abra el archivo DBF en modo binario y lea su contenido.
2. Analice la sección de encabezado, extrayendo información sobre cada campo.
3. Para cada campo, muestre su nombre y tipo.
4. Utilice la información del tamaño del campo para comprender cómo se organizan los datos.
5. Implemente la gestión de errores para casos en los que el formato del archivo pueda estar dañado o no sea compatible.
6. Después de ejecutar el programa, debería ver una lista de nombres de campos y sus tipos.

Cree un programa que muestre la lista de campos almacenados en un archivo DBF.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;
using System.IO;
using System.Text;

class DBFReader
{
    // Main method to execute the program
    static void Main(string[] args)
    {
        // Path to the DBF file (change to the actual file path)
        string dbfFilePath = "path_to_your_file.dbf"; 
        
        // Open the DBF file in binary mode
        using (FileStream fs = new FileStream(dbfFilePath, FileMode.Open, FileAccess.Read))
        {
            // Create a BinaryReader to read the file's content
            using (BinaryReader reader = new BinaryReader(fs))
            {
                // Read the DBF header (32-byte general header and field header blocks)
                byte[] header = reader.ReadBytes(32);

                // Print general information from the header (e.g., file identifier, date, etc.)
                Console.WriteLine("General Header Information:");
                Console.WriteLine($"Product Identifier: {header[0]}");
                Console.WriteLine($"Last Update Date: {header[1]}/{header[2]}/{header[3]}");

                // Move the reader to the position of the fields' header (after the first 32 bytes)
                reader.BaseStream.Seek(32, SeekOrigin.Begin);
                
                // Loop to read and display field headers (32 bytes per field header)
                Console.WriteLine("\nFields in the DBF file:");
                while (reader.BaseStream.Position < reader.BaseStream.Length)
                {
                    byte[] fieldHeader = reader.ReadBytes(32);  // Read the field header block
                    string fieldName = Encoding.ASCII.GetString(fieldHeader, 0, 11).Trim();  // Extract field name
                    char fieldType = (char)fieldHeader[11];  // Field type (C, D, F, etc.)
                    
                    // Display the field name and type
                    Console.WriteLine($"Field Name: {fieldName}, Type: {fieldType}");
                    
                    // Skip the remaining bytes in the header
                    reader.BaseStream.Seek(21, SeekOrigin.Current); 
                }
            }
        }
    }
}

 Output

General Header Information:
Product Identifier: 3
Last Update Date: 21/5/2025

Fields in the DBF file:
Field Name: Name, Type: C
Field Name: DateOfBirth, Type: D
Field Name: Amount, Type: F
Field Name: IsActive, Type: L

Comparte este ejercicio de C#

Practica más ejercicios C# de Manejo de archivos en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..