ASP
.NET - Exibindo os nomes e a quantidade de arquivos de um
diretório (C#)
Nesta dica vou mostrar como podemos exibir facilmente os arquivos de um diretório em uma pasta do servidor em uma aplicação ASP .NET Web Forms.
Estou usando o Visual Studio Express 2012 for Web (esta versão é grátis e pode ser baixada aqui : http://www.microsoft.com/visualstudio/ptb/downloads)
Abra o Visual Studio Express 2012 for Web e no menu File clique em New Project;
Selecione o template Visual C# -> ASP .NET Empty Web Application e informe o nome ExibindoImagens e clique no botão OK;
![]() |
No menu PROJECT clique em Add New Item;
Selecione Web -> Web Form e informe o nome Default.aspx ou aceite o nome padrão e clique no botão Add;
![]() |
Abra o arquivo Default.aspx e no modo Source defina o código abaixo onde incluímos um controle ListBox com ID igual lstbArquivos e formatamos a aparência da página:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ExibindoImagens.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Arquivos</title> <style type="text/css"> .auto-style1 { font-size: x-large; color: #003399; } </style> </head> <body> <form id="form1" runat="server"> <strong><span class="auto-style1">Macoratti .net - Listando arquivos </span></strong> <hr /> <div> <asp:ListBox ID="lstbArquivos" runat="server" Height="247px" Width="318px" style="background-color: #CCFF99"></asp:ListBox> </div> </form> </body> </html> |
Abaixo vemos a página no modo Design:
![]() |
No menu PROJECT clique em New Folder e crie um novo diretório chamado Imagens no projeto. A seguir clique com o botão direito do mouse sobre este diretório e selecione Add -> Existing Item incluindo arquivos nesta pasta.
Agora abra o arquivo Default.aspx.cs e digite o código abaixo definindo o namespace System.IO e usando o evento Load da página para ler os arquivos de um tipo de uma pasta e exibi-lo em um controle ListBox:
using System; using System.IO; namespace ExibindoImagens { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Le todos os arquivos de um tipo no diretorio DirectoryInfo arquivos = new DirectoryInfo(Server.MapPath("~/Imagens/")); // Pega todas as imagens .gif lstbArquivos.DataSource = arquivos.GetFiles("*.gif"); // vincula os dados no listbox lstbArquivos.DataBind(); } } } |
O mesmo código para a
linguagem VB .NET seria assim: o namespace : Imports System.IO O código: Dim arquivos
As DirectoryInfo = New
DirectoryInfo(Server.MapPath("~/Imagens/")) |
O código acima esta listando os arquivos com extensão .gif do diretório Imagens que esta na raiz da aplicação;
Para listar outros tipos de arquivos bastas mudar a extensão (Ex: *.* lista todos os arquivos). Para escolher outra pasta informe o seu caminho conforme exemplo abaixo:
// Le todos
os arquivos de um tipo no diretorio c:/dados no servidor
DirectoryInfo arquivos = new
DirectoryInfo(Server.MapPath(@"c:/dados/"));
//
Pega todos os arquivos
lstbArquivos.DataSource = arquivos.GetFiles("*.*");
Podemos também exibir a quantidade de arquivos na pasta usando uma sobrecarga do método GetFiles():
Directory.GetFiles Method (String, String, SearchOption)
Este método retorna os nomes dos arquivos (incluindo seus caminhos) que coincidem com o critério especificado no parâmetro SearchOption.
A enumeração SearchOption especifica se a busca será feita no diretório atual ou no diretório atual e todos os subdiretórios.
Os valores possíveis são:
TopDirectoryOnly
- Inclui somente o diretório atual na operação de busca;
AllDirectories - Inclui o diretório atual e
todos os seus subdiretórios na operação de busca;
Exemplos de uso:
int contaArquivos = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length;
// retorn o total de arquivos na pasta e subpastas int contaArquivos = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly).Length; // retorna o total de arquivos na pasta int contaArquivos = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories).Length; // retorn o total de arquivos com extensão .xml no diretório e subdiretórios |
Vamos alterar o código do exemplo para exibir a quantidade de arquivos em um controle Label com ID igual a lblmsg que incluimos na página.
protected void Page_Load(object sender, EventArgs e) { string caminho = @"c:\dados"; string mascara = "*.*"; // Le todos os arquivos de um tipo no diretorio DirectoryInfo arquivos = new DirectoryInfo(caminho); // Pega todas as imagens .gif lstbArquivos.DataSource = arquivos.GetFiles(mascara); // vincula os dados no listbox lstbArquivos.DataBind(); lblmsg.Text = Directory.GetFiles(caminho, mascara, SearchOption.TopDirectoryOnly).Length.ToString() + " Arquivos "; } |
Você pode melhorar o projeto permitindo que o usuário informe o caminho e nome do diretório bem como o tipo de arquivo e se a busca deve ser feita somente no diretório ou incluir também os subdiretórios.
Executando o projeto para o código acima temos:
![]() |
Obs: Alterei o nome do projeto para ExibindoArquivos por ser mais pertinente ao seu objetivo.
Pegue o projeto completo
aqui: ExibindoImagens.zip
Mar 3:26
e se Satanás se tem levantado contra si mesmo, e está dividido, tampouco pode ele subsistir; antes tem fim.Mar 3:27
Pois ninguém pode entrar na casa do valente e roubar-lhe os bens, se primeiro não amarrar o valente; e então lhe saqueará a casa.Mar 3:28
Em verdade vos digo: Todos os pecados serão perdoados aos filhos dos homens, bem como todas as blasfêmias que proferirem;Mar 3:29
mas aquele que blasfemar contra o Espírito Santo, nunca mais terá perdão, mas será réu de pecado eterno.Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#