8.2 Búsqueda externa

En los algoritmos de búsqueda interna se hacían búsquedas en arreglos y variables dentro de la memoria del programa, ahora en búsqueda externa trataremos la manera de cómo encontrar datos dentro de documentos guardados fuera de la memoria del programa es decir dispositivos de almacenamiento(disco duro, CD, USV, etc.).

Para poder realizar dicha búsqueda primero hay que tener acceso al documento desde el programa y para eso tenemos que implementar una función del siguiente tipo:

Si la dirección del documento es fija:

FileStream son = new FileStream(OpenFile.Direccion del documento, FileMode.Open, FileAccess.Read);
StreamReader so = new StreamReader(son);

Si no es fija puedes usar esta estructura:

OpenFileDialog Open = new OpenFileDialog();
Open.ShowDialog();
try
{
FileStream son = new FileStream(OpenFile.FileName, FileMode.Open, FileAccess.Read);
StreamReader so = new StreamReader(son);
}
catch(ArgumentException)
{
}

Lo que esta asi son nombres de objetos y si modificas uno modifica todos los que lleven el mismo nombre, lo que esta asi lo puedes modificar tomando en consideracion lo que dice el texto. La parte de StreamReader so = new StreamReader(son); tomala a consideracion.

Ahora ya tenemos acceso de lectura al documento especificado y podremos hacer la búsqueda de los datos requeridos esto lo haremos mediante algún método planteado en los siguientes temas.

Ejemplo 1: Crea un documento de notepad que contenga 5 nombres (Ana, Claudia, Norma, Paola, Sandra) uno por renglón y busca un nombre desde C#.

:estructura_datos_csharp_develop:nombres.jpg

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void buscar_Click(object sender, EventArgs e)
        {
            int r=0;
            OpenFileDialog OpenFile = new OpenFileDialog();
            OpenFile.ShowDialog();
            try
            {
                FileStream son = new FileStream(OpenFile.FileName, FileMode.Open, FileAccess.Read);
                StreamReader so = new StreamReader(son);
                for (int i = 0; i <=4; i++)
                {
                    if (textBox1.Text.ToString() == (so.ReadLine()).ToString())
                    {
                        r = i + 1;
                    }
                }
                so.Close();
            }
            catch (ArgumentException)
            {
            }
            if (r != 0)
            {
                MessageBox.Show("Se encuentra en \nel renglon:" + r.ToString(), "Resultado");
            }
            else
            {
                MessageBox.Show("No se encontro en el arreglo", "Resultado");
            }
        }
    }
}

Programa corriendo:

:estructura_datos_csharp_develop:8.2a.jpg

:estructura_datos_csharp_develop:8.2b.jpg

:estructura_datos_csharp_develop:8.2c.jpg

Politica de Privacidad