ArrayList - Lector de archivos de texto Ejercicio C# - Curso de Programación C# (C Sharp)

 Ejercicio

ArrayList - Lector de archivos de texto

 Objetivo

Entregue aquí su lector básico de archivos de texto.

Este lector de archivos de texto siempre muestra 21 líneas del archivo de texto, y el usuario podría usar la tecla up para mostrar la línea anterior, la tecla down para mostrar la siguiente línea y la tecla ESC para salir.

Sugerencias:
El lector de archivos de texto debe tener 3 métodos:
- ReadFile (Leer el archivo de texto y almacenarlo en la memoria)
- ShowMenu (Borrar la consola y preparar la línea superior y la línea inferior [raw 23] de la consola, cambiando los colores usando Console.BackgroundColor, Console.ForegroundColor, ConsoleColor y Console.SetCursorPosition(column, raw). Una vez preparado el menú, recuerda colocar el cursor en el segundo raw).
- ShowFrom (escribir 21 líneas, considerando la posición de la primera línea a escribir)
La lógica del programa principal debe ser como: ShowMenu, ShowFrom, ReadKey, ShowMenu, ShowFrom, ReadKey....

 Código de Ejemplo

// Importing necessary namespaces for file handling and console manipulation
using System;  // For basic input/output and handling console operations
using System.Collections;  // To use ArrayList for dynamic list handling
using System.IO;  // For file input/output operations

class Program
{
    // The list to store the lines from the text file
    static ArrayList lines = new ArrayList();  // ArrayList to hold all the lines from the text file
    // The current position (index of the first line to be shown)
    static int currentLineIndex = 0;  // Keeps track of the current position in the file

    // Method to read the file and store its lines in the 'lines' ArrayList
    static void ReadFile(string filePath)
    {
        // Try to open and read the file
        try
        {
            // Read all lines from the text file and store them in the ArrayList
            string[] fileLines = File.ReadAllLines(filePath);
            lines.AddRange(fileLines);  // Add all lines to the 'lines' ArrayList
        }
        catch (Exception ex)
        {
            // Display error if the file cannot be read
            Console.WriteLine("Error reading file: " + ex.Message);  // Show error message if file can't be read
        }
    }

    // Method to show the menu and set up the display
    static void ShowMenu()
    {
        // Clear the console screen
        Console.Clear();  // Clears the console screen for refreshing the display
        
        // Set up background and foreground colors for the menu
        Console.BackgroundColor = ConsoleColor.Black;  // Set background color to black
        Console.ForegroundColor = ConsoleColor.White;  // Set text color to white

        // Set the cursor to the top row (row 1)
        Console.SetCursorPosition(0, 0);  // Move cursor to the top-left corner of the console
        
        // Display a simple header
        Console.WriteLine("Text File Reader - Use UP/DOWN arrows to navigate, ESC to exit.");  // Display instructions at the top
    }

    // Method to show the 21 lines starting from the current index
    static void ShowFrom(int startLineIndex)
    {
        // Ensure we don't go beyond the file's end
        int endLineIndex = Math.Min(startLineIndex + 21, lines.Count);  // Calculate the end line index based on current position

        // Display lines from the 'lines' array starting from 'startLineIndex'
        for (int i = startLineIndex; i < endLineIndex; i++)
        {
            // Adjust cursor position to display lines one by one starting from row 2 (skip the header)
            Console.SetCursorPosition(0, i - startLineIndex + 2);  // Set the cursor position dynamically for each line
            Console.WriteLine(lines[i]);  // Display the current line
        }
    }

    // Main method to execute the program logic
    static void Main(string[] args)
    {
        // Ask the user for the file path
        Console.Write("Enter the file path: ");  // Prompt the user for the file path
        string filePath = Console.ReadLine();  // Read the user input as the file path

        // Read the file contents
        ReadFile(filePath);  // Call ReadFile method to load the file into memory

        // Main program loop to handle navigation and display
        while (true)
        {
            // Show the menu and the lines from the current position
            ShowMenu();  // Call ShowMenu to display the navigation instructions
            ShowFrom(currentLineIndex);  // Call ShowFrom to display the lines starting from currentLineIndex

            // Get user input for navigation
            var key = Console.ReadKey(true).Key;  // Read key input without echoing to console

            // If the ESC key is pressed, break out of the loop and exit
            if (key == ConsoleKey.Escape)
            {
                break;  // Exit the program if ESC is pressed
            }
            // If the DOWN arrow key is pressed, move to the next 21 lines (if possible)
            else if (key == ConsoleKey.DownArrow)
            {
                if (currentLineIndex + 21 < lines.Count)  // Check if there are more lines to show
                {
                    currentLineIndex += 21;  // Move the index forward by 21 lines
                }
            }
            // If the UP arrow key is pressed, move to the previous 21 lines (if possible)
            else if (key == ConsoleKey.UpArrow)
            {
                if (currentLineIndex - 21 >= 0)  // Ensure we don't move past the beginning of the file
                {
                    currentLineIndex -= 21;  // Move the index backward by 21 lines
                }
            }
        }

        // Exiting the program
        Console.WriteLine("\nProgram terminated.");  // Inform the user that the program has ended
    }
}

Más ejercicios C# Sharp de Gestión Dinámica de Memoria

 Implementación de una cola usando una matriz
Implementación de una cola...
 Implementar una pila usando una matriz
Implementar una pila...
 Colecciones de colas
Cree una cola de cadenas, utilizando la clase Queue que ya existe en la plataforma DotNet. Una vez creado, muestra todos los elementos almacenados ...
 Notación Polish inversa de pila de cola
Cree un programa que lea desde un archivo de texto una expresión en notación polaca inversa como, por ejemplo: 3 4 6 5 - + * 6 + (Resultado 21) ...
 ArrayList
Cree una lista de cadenas utilizando la clase ArrayList que ya existe en la plataforma DotNet. Una vez creado, muestra todos los elementos almacena...
 ArrayList duplicar un archivo de texto
Cree un programa que lea desde un archivo de texto y lo almacene en otro archivo de texto invirtiendo las líneas. Por lo tanto, un archivo de texto...
 Suma ilimitada
Cree un programa para permitir que el usuario ingrese una cantidad ilimitada de números. Además, pueden ingresar los siguientes comandos: "suma", par...
 Hast Table - Diccionario
Entregue aquí su diccionario usando Hash Table...
 Paréntesis
Implementar una función para comprobar si una secuencia de paréntesis abierto y cerrado está equilibrada, es decir, si cada paréntesis abierto corresp...
 Mezclar y ordenar archivos
Cree un programa para leer el contenido de dos archivos diferentes y mostrarlo mezclado y ordenado alfabéticamente. Por ejemplo, si los archivos conti...
 ArrayList de puntos
Cree una estructura "Point3D", para representar un punto en el espacio 3-D, con coordenadas X, Y y Z. Cree un programa con un menú, en el que el us...
 Buscar en archivo
Cree un programa para leer un archivo de texto y pida al usuario oraciones para buscar en él. Leerá todo el archivo, lo almacenará en un ArrayList,...

Juan A. Ripoll - Tutoriales y Cursos de Programacion© 2025 Todos los derechos reservados.  Condiciones legales.