Lector Interactivo De Archivos De Texto Con Navegación En C#

En este ejercicio, implementará un lector básico de archivos de texto en C# que muestra 21 líneas de texto a la vez. El programa permitirá a los usuarios navegar por el archivo con las flechas arriba y abajo, y salir del lector con la tecla ESC.

- Para lograr esto, el programa incluirá tres métodos clave:
- ReadFile: Lee el archivo de texto y almacena su contenido en memoria para una navegación eficiente.
- ShowMenu: Limpia la consola, configura las líneas superior e inferior de la pantalla (fila 23), cambia los colores con Console.BackgroundColor y Console.ForegroundColor y posiciona el cursor correctamente para la visualización de texto.
- ShowFrom: Escribe 21 líneas en la consola, teniendo en cuenta la posición de la primera línea que se mostrará.

El bucle principal del programa seguirá una lógica estructurada:

- ShowMenu para mostrar los elementos de la interfaz de usuario.
- ShowFrom para mostrar el texto.
- ReadKey para capturar la entrada del usuario para la navegación.
- Repetir el proceso hasta que el usuario presione ESC para salir.

Este ejercicio le ayudará a desarrollar habilidades en el manejo de archivos de texto, la administración de la salida de la consola y la implementación de controles de navegación del usuario en C#.



Grupo

Gestión Dinámica de Memoria en C#

Objectivo

1. Leer un archivo de texto y almacenar su contenido en memoria.
2. Mostrar 21 líneas de texto a la vez en la consola.
3. Permitir al usuario desplazarse hacia arriba y hacia abajo con las teclas de flecha.
4. Mostrar un menú en la parte inferior de la pantalla para indicar los controles disponibles.
5. Usar Console.SetCursorPosition, ConsoleColor y Console.Clear para formatear.
6. Salir del programa al presionar la tecla ESC.

Proporcione aquí su lector básico de archivos de texto, que muestra 21 líneas de texto y permite al usuario navegar con las teclas de flecha arriba y abajo, y salir con la tecla ESC.

Consejos:
El lector de archivos de texto debe tener tres métodos:

- ReadFile (lee el archivo de texto y lo almacena en memoria)
- ShowMenu (limpia la consola, establece las líneas superior e inferior de la consola [fila 23], cambia los colores usando Console.BackgroundColor, Console.ForegroundColor, ConsoleColor y Console.SetCursorPosition(column, row). Una vez preparado el menú, recuerde colocar el cursor en la segunda fila).
- ShowFrom (escribe 21 líneas, considerando la posición de la primera línea a escribir)

La lógica principal del programa debe ser la siguiente: ShowMenu → ShowFrom → ReadKey → ShowMenu → ShowFrom → ReadKey...

Ejemplo de ejercicio en C#

 Copiar código C#
using System;
using System.Collections.Generic;
using System.IO;

class TextFileReader
{
    static List lines = new List(); // List to store file lines
    static int startLine = 0; // Track the first visible line
    const int maxLines = 21; // Number of lines to display at a time

    static void Main()
    {
        ReadFile("sample.txt"); // Read the file into memory

        ConsoleKey key;
        do
        {
            ShowMenu(); // Display the menu UI
            ShowFrom(startLine); // Display text starting from the current position
            key = Console.ReadKey(true).Key; // Read user input (without displaying the key)

            if (key == ConsoleKey.DownArrow && startLine + maxLines < lines.Count)
            {
                startLine++; // Move down one line
            }
            else if (key == ConsoleKey.UpArrow && startLine > 0)
            {
                startLine--; // Move up one line
            }

        } while (key != ConsoleKey.Escape); // Exit on ESC key
    }

    static void ReadFile(string filePath)
    {
        if (File.Exists(filePath)) // Check if file exists
        {
            lines = new List(File.ReadAllLines(filePath)); // Read all lines into list
        }
        else
        {
            Console.WriteLine("File not found!");
            Environment.Exit(1); // Exit if the file doesn't exist
        }
    }

    static void ShowMenu()
    {
        Console.Clear(); // Clear the console
        Console.BackgroundColor = ConsoleColor.DarkBlue; // Set background color
        Console.ForegroundColor = ConsoleColor.White; // Set text color

        Console.SetCursorPosition(0, 23); // Set cursor at row 23 for menu
        Console.WriteLine(new string(' ', Console.WindowWidth)); // Clear the menu area
        Console.SetCursorPosition(0, 23);
        Console.Write("Use UP/DOWN arrows to navigate. Press ESC to exit.");

        Console.ResetColor(); // Reset colors after writing menu
        Console.SetCursorPosition(0, 1); // Set cursor for text display
    }

    static void ShowFrom(int start)
    {
        Console.SetCursorPosition(0, 1); // Move cursor to second row
        for (int i = start; i < start + maxLines && i < lines.Count; i++)
        {
            Console.WriteLine(lines[i]); // Print the line
        }
    }
}

 Output

//Code Output (Example with "sample.txt"):
Line 1: Introduction to C# Programming  
Line 2: Understanding Variables and Data Types  
Line 3: Control Flow Statements  
...  
Line 21: Object-Oriented Programming Concepts  

Use UP/DOWN arrows to navigate. Press ESC to exit.  

//User presses the down arrow key
Line 2: Understanding Variables and Data Types  
Line 3: Control Flow Statements  
Line 4: Loops and Iteration  
...  
Line 22: Working with Collections  

Use UP/DOWN arrows to navigate. Press ESC to exit.

Comparte este ejercicio de C#

Practica más ejercicios C# de Gestión Dinámica de Memoria 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#..