Explorador De Archivos Con Navegación En C#

En este ejercicio, creará un programa en C# que muestra los archivos y carpetas del directorio actual. El usuario puede navegar por la lista desplazándose hacia arriba y hacia abajo. Al presionar Intro sobre el nombre de una carpeta, accederá a ella y verá su contenido. Si presiona Intro sobre un archivo, este se abrirá.

El programa debe implementar una navegación básica de archivos y carpetas y permitir a los usuarios explorar la estructura de directorios. Debe actualizar dinámicamente la lista mostrada a medida que el usuario se desplaza entre carpetas. Este es un ejercicio importante para practicar la manipulación de archivos y directorios en C#.



Grupo

Usando bibliotecas adicionales en C#

Objectivo

1. Usar los métodos Directory.GetFiles() y Directory.GetDirectories() para listar el contenido de la carpeta actual.
2. Mostrar los nombres de las carpetas y los archivos en la consola.
3. Permitir al usuario navegar hacia arriba y hacia abajo en la lista de archivos y carpetas.
4. Si el usuario presiona Enter en una carpeta, acceder a ella y mostrar su contenido.
5. Si el usuario presiona Enter en un archivo, abrirlo (si es un archivo de texto, mostrar su contenido; de lo contrario, mostrar un mensaje apropiado).
6. Gestionar la navegación correctamente al llegar al principio o al final de la lista.
7. Mostrar la ruta de la carpeta en la parte superior para indicar la carpeta actual.

Crear un programa que muestre los archivos en la carpeta actual y permita al usuario navegar hacia arriba y hacia abajo en la lista. Si el usuario presiona Enter en el nombre de una carpeta, accederá a ella. Si presiona Enter en un archivo, este se abrirá.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;  // For general system functions
using System.IO;  // For file and directory handling
using System.Linq;  // For LINQ to sort the directory entries

class Program
{
    static void Main()
    {
        string currentDirectory = Directory.GetCurrentDirectory();  // Get the current directory
        string[] fileEntries;
        string[] dirEntries;
        int selectedIndex = 0;  // Tracks the user's selection

        // Loop for navigating through the files and folders
        while (true)
        {
            // Get directories and files in the current directory
            dirEntries = Directory.GetDirectories(currentDirectory);
            fileEntries = Directory.GetFiles(currentDirectory);

            // Combine and sort both directories and files
            var entries = dirEntries.Concat(fileEntries).ToArray();

            // Clear the console and display the current directory
            Console.Clear();
            Console.WriteLine($"Current Directory: {currentDirectory}");

            // Display the list of directories and files
            for (int i = 0; i < entries.Length; i++)
            {
                // Highlight the selected item
                if (i == selectedIndex)
                {
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.ForegroundColor = ConsoleColor.White;
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.ForegroundColor = ConsoleColor.White;
                }

                Console.WriteLine(entries[i]);
                Console.ResetColor();
            }

            // Wait for user input to navigate or select
            var key = Console.ReadKey(true).Key;

            if (key == ConsoleKey.UpArrow && selectedIndex > 0)
            {
                selectedIndex--;  // Move up the list
            }
            else if (key == ConsoleKey.DownArrow && selectedIndex < entries.Length - 1)
            {
                selectedIndex++;  // Move down the list
            }
            else if (key == ConsoleKey.Enter)
            {
                string selectedPath = entries[selectedIndex];

                // If the selected entry is a directory, enter it
                if (Directory.Exists(selectedPath))
                {
                    currentDirectory = selectedPath;  // Change to the selected folder
                }
                // If it's a file, open it
                else if (File.Exists(selectedPath))
                {
                    Console.Clear();
                    Console.WriteLine($"Opening file: {selectedPath}");
                    string fileContent = File.ReadAllText(selectedPath);
                    Console.WriteLine(fileContent);  // Display file content
                    Console.ReadKey();  // Wait for user to press a key before returning to the file list
                }
            }
            else if (key == ConsoleKey.Escape)  // Exit the program on Escape key
            {
                break;
            }
        }
    }
}

 Output

//Output Example:
Current Directory: C:\Users\Example\Documents

C:\Users\Example\Documents\Folder1
C:\Users\Example\Documents\Folder2
C:\Users\Example\Documents\File1.txt
C:\Users\Example\Documents\File2.txt

//After selecting a folder and pressing Enter:
Current Directory: C:\Users\Example\Documents\Folder1

C:\Users\Example\Documents\Folder1\Subfolder1
C:\Users\Example\Documents\Folder1\File3.txt

//After selecting a file and pressing Enter:
Opening file: C:\Users\Example\Documents\File1.txt

This is the content of File1.

Comparte este ejercicio de C#

Practica más ejercicios C# de Usando bibliotecas adicionales 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#..