ASP.NET - Exibindo os nomes de arquivos de um diretório


Preencher uma controle ListBox com os nomes dos arquivos de um diretório é uma tarefa relativamente simples de ser feita mesmo em páginas ASP.NET.

Você vai precisar dos seguintes ingredientes :

Para subsidiar os seus conhecimentos a respeito de coleções leia o artigo : VB.NET - Usando Coleções.

Vale lembrar que em uma página ASP.NET você pode não ter acesso para realizar determinadas tarefas.

Vamos agora a parte prática onde eu vou mostrar o código que realiza este serviço. Vou usar o Web Matrix como editor do código e para testar o código vou usar o servidor do WebMatrix , assim você não precisa ter o VS.NET nem o IIS instalado ; precisa ter somente a plataforma .NET instalada e o Web Matrix ; ambos você obtêm no site da microsoft sem gastar um centavo. (só conta telefônica...)

Inicie o WebMatrix e na janela - Add New file - Selecione:

Templates - (General)
ASP.NET Page
Location - D:\aspnet\ (faça os ajustes para sua configuração)
FileName - ListaArquivos.aspx
Language - Visual Basic . NET

No modo Design do Web Matrix , na aba Design insira os seguinte controles :

  • ListBox
  • Button
  • Label

Na guia Code vamos incluir o código que irá efetivamente realizar a operação :

Neste código cabe destacar os seguintes pontos:

- Declaramos a variável nomeArquivo como pública

- No evento Page_Load na primeira vez que a página for submetida temos o seguinte :

  1. Definimos a varável diretório como do tipo Directory -   Dim diretorio As Directory
  2. criamos um arrayList chamado listaValores -  Dim listaValores As ArrayList = New ArrayList
  3. Obtivemos todos (*) os arquivos da pasta d:\inetpub\wwwroot - Directory.GetFiles("d:\Inetpub\wwwroot\", "*")
  4. Percorremos a relação de arquivos atribuindo o nome do arquivo a variável pública nomeArquivo -   nomeArquivo = arquivos(i)
  5. Retiramos do nome do arquivo o caminho completo -  nomeArquivo = nomeArquivo.Replace("d:\Inetpub\wwwroot\", "")
  6. Incluímos o nome do arquivo no arrayList -  listaValores.Add(nomeArquivo)
  7. Atribuimos o arrayList a propriedade DataSource do ListBox -   ListBox1.DataSource = listaValores
  8. Vinculamos o arraList ao componente ListBox - ListBox1.DataBind

O código completo esta exibido abaixo:

<%@ Page Language="VB" %>
<%@ import Namespace="System.Collections" %>
<%@ import Namespace="System.IO" %>

<script runat="server">

Dim nomeArquivo as String

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

If Not IsPostBack Then

  Dim diretorio As Directory
  Dim listaValores As ArrayList = New ArrayList
  Dim arquivos As String() = Directory.GetFiles("d:\Inetpub\wwwroot\", "*")
  Dim i As Integer = 0

  While i < arquivos.Length
    nomeArquivo = arquivos(i)
    nomeArquivo = nomeArquivo.Replace("d:\Inetpub\wwwroot\", "")
    listaValores.Add(nomeArquivo)
  End While

  ListBox1.DataSource = listaValores
  ListBox1.DataBind

End If

End Sub

Sub SubmitBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
  If ListBox1.SelectedIndex > -1 Then
    Label1.Text = "Opção selecionada -> " + ListBox1.SelectedItem.Text
  End If
End Sub

</script>
<html>
<head>
</head>
<body>
<form runat="server">
<h3><font face="Verdana" color="#0000a0">Listando arquivos de um diretório</font>
<hr />
</h3>
<p>
<font style="BACKGROUND-COLOR: yellow" face="Verdana"><strong>Exibindo os arquivos
da pasta d:\inetpub\wwwroot</strong></font>
</p>
<p>
<br />
<asp:ListBox id="ListBox1" runat="server" Rows="1" Width="204px"></asp:ListBox>
<asp:button id="Button1" onclick="SubmitBtn_Click" runat="server" Text="Enviar"></asp:button>
</p>
<p>
<asp:Label id="Label1" runat="server" font-size="10pt" font-name="Verdana" forecolor="Red" font-bold="True" font-names="Comic Sans MS"></asp:Label>
</p>
</form>
</body>
</html>

Executando o projeto no servidor Web Matrix local temos:

Eu sei é apenas ASP.NET mas eu gosto...


José Carlos Macoratti