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 CamargoOlá 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.
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!