Desenvolvimento - ASP. NET

Criando um Leitor de Arquivos em ASP.NET

Neste artigo irei mostrar criar um leitor de arquivos usando ASP.NET. Usaremos os namespaces System.IO e o System.Collections.

por Wellington Balbo de Camargo



Olá pessoal, neste artigo irei mostrar criar um leitor de arquivos usando ASP.NET. Usaremos os namespaces System.IO e o System.Collections.

Faço este artigo com base na videoaula de Luiz Maia, do Portal Linha de Código, mediante autorização do mesmo. Acompanhem o passo-a-passo:

O que faremos será um simples aplicativo que funcionará assim: o usuário irá selecionar um determinado arquivo texto ou XML em um ListBox, este arquivo estará em uma determinada pasta e, quando o usuário clicar no botão para ler o arquivo, essa pasta será “varrida” em busca do arquivo selecionado e será exibido o conteúdo do mesmo em um TextBox.

Comece criando uma aplicação Web com o nome LeitordeArquivos.

Seguindo a videoaula que faço como base para este artigo criei uma pasta na raiz da minha unidade C: com o nome Arquivos, e adicionei a ela um arquivo txt e um xml. Mais fica a critério de cada um onde irá criar a pasta e quais arquivos serão usados.

Em sua aplicação, na Default.aspx, abra o modo Design, arraste um ListBox e altere a propriedade Rows para 1. Arraste também um Button, um Label e um TextBox para que nosso form fique da seguinte forma (altere a propriedade do TextMode para Multiline, do TextBox):

Alterei o ID de cada controle para estes nomes: ListBox – ltbArquivos, Button – btnExibirArquivos, Label – lblMensagem e TextBox – txtConteudo (apenas sugestões de nomes). Ok, a parte do Design de nossa aplicação está completa. Agora dê um F7 na tela para fazermos a codificação.

Comece declarando os namespaces System.IO e System.Collections.

using System.IO;

using System.Collections;

Declare uma variável global para indicarmos a pasta que nosso leitor irá percorrer em busca dos arquivos.

public string pasta = @"C:\Arquivos";

Agora vamos criar o método responsável por percorrer os arquivos na pasta Arquivos (já declarada por meio da variável pasta) e popular o ListBox:

private void PopulaListBox()

    {

        try

        {

            //instancio uma variável da classe ArrayList

            ArrayList vetor = new ArrayList();

            //crio um vetor de arquivos que recebe o método GetFiles da classe Directory, passo como parâ-

            //metro a varíavel pasta e o asterisco, que indica que qualquer extensão de arquivo será aceita

            string[] arquivos = Directory.GetFiles(pasta, "*");

            //faço um foreach para "varrer" a pasta, ou seja, para cada arquivo dentro da varíavel arquivos

            foreach (String arquivo in arquivos)

            {

                //instancio o FileInfo, que recebe como parâmetro a variável arquivo

                FileInfo fi = new FileInfo(arquivo);   

                //populo meu vetor com o nome de todos os arquivos contidos dentro de minha pasta

                vetor.Add(fi.Name);

            }

            //Populo o ListBox com meu vetor e chamo o método DataBind

            ltbArquivos.DataSource = vetor;

            ltbArquivos.DataBind();

        }

        catch (Exception)

        {

           

            throw;

        }

    }

No Page_Load de nossa página, faça a seguinte verificação e chame o método recém-criado:

protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            PopulaListBox();

        }

    }

Desta forma, no Page_Load de nossa página, toda vez que não for PostBack na página, nosso método PopulaListBox será chamado, o mesmo irá percorrer os arquivos contidos da pasta Arquivos e irá popular nosso ListBox com as informações encontradas na pasta.

Agora vamos criar o método responsável por exibir o conteúdo do ListBox ao clicarmos no botão criado anteriormente:

private void ExibirConteudo()

    {

        try

        {

            //verifico se o ListBox é maior que -1, ou seja, se ele tem algum valor

            if (ltbArquivos.SelectedIndex > -1)           

            {

                //declaro a variável texto e a inicializo com o valor vazio

                string texto = String.Empty;

                //jogo em minha label o valor usando String.Format e concatenando com o item do ListBox

                lblMensagem.Text = String.Format("Arquivo em exibição: {0}", ltbArquivos.SelectedItem.Text);

                //declaro uma variável que receberá nosso arquivo do ListBox

                string arquivo = pasta + "\\" + ltbArquivos.SelectedItem.Text;

                //uso o método OpenText, da classe StreamReader para abrir a

                //variável arquivo, que representa meu arquivo vindo da ListBox

                StreamReader sr = File.OpenText(arquivo);

                //defino o início da leitura do meu arquivo

                sr.BaseStream.Seek(0, SeekOrigin.Begin);

                //uso um While que irá ler meu arquivo

                while (sr.Peek() > -1)

                {

                    //minha variável texto recebe o método ReadLine, mais o Environment, que pula a linha

                    texto += sr.ReadLine() + Environment.NewLine;

                }

                //fecho meu StreamReader

                sr.Close();

                //meu TextBox recebe a variável texto, que já está preenchida com o conteúdo do arquivo

                txtConteudo.Text = texto;

            }

        }

        catch (Exception)

        {

           

            throw;

        }

    }

Agora volte ao modo Design, dê dois cliques no botão para irmos ao método dele e chame o método que acabamos de criar.

protected void btnExibirConteudo_Click(object sender, EventArgs e)

    {

        ExibirConteudo();

    }

Salve seu projeto e o compile. Se for a 1ª vez que você compilou este projeto, o Visual Studio irá perguntar se você deseja modificar o Web.Config para permitir a compilação.

Descrição: ModifyWebConfig.JPG

Clique em OK e aguarde.

Escolha no ListBox o arquivo e clique no botão Exibir Conteúdo para ver o resultado logo abaixo.

Para mais informações sobre o namespace System.IO, clique aqui. Já para saber sobre mais sobre o System.Collections, clique aqui (em inglês).

Assim finalizo o artigo.

Para quem se interessar, disponibilizo o código fonte desse projeto aqui.

Créditos à Luiz Maia, que fez as videoaulas e ao Portal Linha de Código, por onde pude baixá-las (mediante assinatura), estudá-las e posteriormente fazer este artigo.

Quaisquer dúvidas, mandem emails para wellingtonbalbo@gmail.com ou deixem nos comentários deste artigo que responderei o mais breve possível.

Até o próximo artigo!

Wellington Balbo de Camargo

Wellington Balbo de Camargo - Desenvolvedor Web/Desktop em .NET, com pouco mais de 1 ano de experiência na área. Cursando o 4º Semestre de Análise de Sistemas, atualmente estuda para melhorar os conhecimentos em SQL Server e ASP.NET, buscando em um futuro próximo as certificações Microsoft nessas áreas. Mantém um blog com dicas e artigos para iniciantes em .NET no endereço http://programandodotnet.wordpress.com e nas horas vagas procura ajudar e aprender com o pessoal do Fórum daMSDN. Atualmente é editor de artigos da Linha de Código.